- temperatureCoupled temperature
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature
- thermal_conductivity_modelFINK_LUCUTAThe thermal conductivity model.
Default:FINK_LUCUTA
C++ Type:MooseEnum
Controllable:No
Description:The thermal conductivity model.
UO2Thermal
Computes thermal conductivity and specific heat capacity of uranium dioxide fuel.
Description
The UO2Thermal model computes specific heat and thermal conductivity for oxide fuel. A number of correlations are available. This model is also compliant for use in AD-based simulations by adding the AD prefix to the type name.
Thermal Conductivity
Five empirical models are available in BISON to compute UO thermal conductivity and its dependence on temperature, porosity, burnup, and, for four of the models, Gadolinia content. Choices for UO fuel include:
NFIR (A. Marion (NEI) letter dated June 13, 2006 to H. N. Berkow (USNRC/NRR), 2006; Lyon, 2015),
Modified NFI (Ohira and Itagaki, 1997) (modifications are described in Lanning et al. (2005)),
Ronchi-Staicu (Ronchi et al., 2004; Staicu et al., 2014), and
The Halden, NFIR and modified NFI models can account for Gadolinia content. Empirical fits for the temperature dependent specific heat of UO accompany the Fink-Lucuta conductivity model.
For the most part, the thermal conductivity of urania is represented as the sum of a lattice vibration (phonon) and an electronic (electron hole pair effect) term or for unirradiated material at 95% theoretical density (TD) (1) The first term in Eq. (1) is typically inversely proportional to the sum of temperature and burnup dependent functions, while the second term, usually an exponential function of inverse temperature, is inversely proportional to temperature or temperature squared. For example, (2) (3) where , , and are constants, is burnup, is temperature, and , , , and are functions of burnup or temperature. While each of the thermal conductivity models has the basic form given by Eq. (2) and Eq. (3), each has their own specific set of constants and perhaps additional corrections that account for effects of dissolved fission products, precipitated fission products, porosity, deviation from stoichiometry, and radiation damage. In general, the final conductivity corrected for these effects is given as (4) where is the dissolved fission products correction, is the precipitated fission products correction, is the porosity correction, is the deviation from stoichiometry (1.0 for uranium fuel but 1 if Gadolinia is present), and is the radiation damage correction.
Fink-Lucuta
In the Fink-Lucuta model, the temperature-dependence of unirradiated material is defined using the equation suggested by Fink (2000). This relationship is then modified to account for the effects of irradiation, porosity and burnup using a series of multipliers, as outlined in detail by Lucuta et al. (1996). The Fink equation is (5) where is the temperature in K divided by 1000. Eq. (5) is multiplied by the following factor to obtain 100% TD thermal conductivity (6) Eq. (6) is then corrected per Eq. (4) as perscribed by Lucuta with the following correction factors.
The dissolved fission products correction is given as (7) and the precipitated fission products correction is calculated as (8) where is the burnup in atomic percent and is the temperature in K. The porosity correction is determined with (9) where is the porosity.
Finally the radiation damage correction factor is given by (10) where is the temperature in K, and bu is the burnup in atomic percent. The Fink-Lucuta model is valid from 298 to 3120 K (Carbajo et al., 2001).
Halden
The Halden model has the following form for the thermal conductivity (95% theoretical density): (11) where the reciprocal expression and term6 correspond to k and k, respectively. For 95% TD fuel, the terms for Eq. (11) are given in Table 1.
Table 1: Parameters used in the Halden Thermal Fuel Model (Lanning et al., 2005)
| Model Expression | Parameter Value |
|---|---|
| 0.1148 | |
| 1.1599 Gdcon | |
| 1.1599 | |
| BuUO2 | |
| 1 | |
where is the Gadolinia concentration in weight percent, is the deviation from stoichiometry, i.e. (2 - oxygen/metal ratio), is the burnup in MWd/kgUO, and is the temperature in C.
Eq. (11) is multiplied by the appropriate factor to return the thermal conductivity to 100% TD and then multiplied by a density correction factor (similar to Eq. (9) but written in terms of percent TD) to provide a thermal conductivity representative of the material of interest (12) where is the fractional TD. The multiplier 1.0789 is the inverse of the density correction factor evaluated at 0.95 TD. The Halden UO correlation is valid over the following ranges (Lanning et al., 2005)
Figure 1 compares the the Fink-Lucuta and Halden models as a function of temperature and burnup for 95% theoretical density UO.

Figure 1: A comparison of the Fink-Lucuta and Halden empirical models for the thermal conductivity of 95% theoretical density UO, as a function of temperature and burnup.
NFIR
The NFIR correlation also has the general form of Eq. (1). However, the NFIR model contains a temperature dependent thermal recovery function that accounts for self-annealing of defects in the fuel as it heats up. The ultimate effect of the self- annealing is a slight increase of the thermal conductivity over a range of temperatures up to 1200 K. As a result of this formulation, two components of are used, one at the start of thermal recovery and one at the end of thermal recovery. The thermal recovery function is used to interpolate between these two values to compute k. Thus (13) where is the thermal recovery function, is temperature in , is the phonon contribution at the start of thermal recovery, and is the phonon contribution at the end of thermal recovery. This model has a gadolinium correction associated with it. Gadolinium is reported as weight percent with the default set to zero. The individual terms are (14) (15)
(16)
(17)
(18)
(19)
(20)
(21) where is burnup in MWd/kgU and is gadolinia content in wt.%. Eq. (13) is then multiplied by a temperature dependent density correction factor to give (22) where is the fractional density. Figure 2 compares the the Fink-Lucuta and NFIR models as a function of temperature and burnup for 95% theoretical density UO.

Figure 2: A comparison of the Fink-Lucuta and NFIR empirical models for the thermal conductivity of 95% theoretical density UO, as a function of temperature and burnup.
Modified NFI
The modified NFI model is also of the form of Eq. (11). Terms are defined in Table 2.
Table 2: Parameters used in the Modified NFI Thermal Fuel Model
| Model Expression | Parameter Value |
|---|---|
| 0.0452 | |
| 1.1599 Gdcon | |
| T | |
| Bu | |
where is the Gd concentration in weight percent, is the temperature in K, is the burnup in MWd/kgU. Again, Eq. (12) is used to convert to the TD of interest. The modified NFI model is valid over the following ranges (Lanning et al., 2005)
Figure 3 compares the Fink-Lucuta and NFI modified models as a function of temperature and burnup for 95% theoretical density UO.

Figure 3: A comparison of the Fink-Lucuta and modified NFI empirical models for the thermal conductivity of 95% theoretical density UO, as a function of temperature and burnup.
Ronchi-Staicu Models
The thermal conductivity at 95% TD (i.e., normalized to 5 vol.% as-fabricated porosity), (W/m/K) is expressed in the following form:
where is the burnup (GWd/t), is the irradiation temperature (K), is the maximum temperature reached during out-of-pile annealing (K), is the instant application temperature (K), and . is assumed to be in the form given by Ronchi et al. (1999). is formulated in terms of the semi-empirical models of and by Ronchi et al. (2004) and Staicu et al. (2014) as follows:
Ronchi et al. (2004) formulates a model for as:
(27)
In Staicu et al. (2014), in Eq. (27) is replaced by for zero gadolinia addition and for non-zero gadolinia addition, where is the gadolinia content in wt.%.
The effect of the irradiation defects on is defined in terms of the out-pile self-irradiation effect () and the effective concentration of irradiation defects at end of life (EOL) () as where is the maximum temperature of and (i.e., ).
(28) In Staicu et al. (2014), in Eq. (28) is replaced by .
The contribution of nonvolatile and volatile fission products is incorporated into the thermal conductivity model by Ronchi et al. (2004) and Staicu et al. (2014) as: where is the fraction of volatile fission products present as dispersed atoms in the fuel matrix and is expressed by in terms of
Ronchi et al. (2004) formulates a model for as:
(29)
In Staicu et al. (2014), in Eq. (29) is replaced by for zero gadolinia addition and for non-zero gadolinia addition, where is the gadolinia content in wt.%.
Toptan Model
The thermal conductivity at 95% TD (i.e., normalized to 5 vol.% as-fabricated porosity), (W/m/K) is expressed by Toptan et al. (2020) in the following form:
with where is the fuel temperature (), is the fraction of the gadolinia content (weight fraction), and is the burnup (MWd/kgU).
The thermal conductivity normalized to a given porosity (fraction) is obtained by
Crumbled Fuel Thermal Conductivity
When simulating LOCA conditions some portions of the fuel column may collapse into a crumbled mixture of fuel fragments and gas. In these regions the effective fuel thermal conductivity of the mixture is calculated by the model proposed by Chiew and Glandt (1983). This model can be used for both UO and mixed oxide (MOX) fuel.
The correlation is given by: where is the reduced thermal polarizability, is the thermal conductivity of the fuel determined by one of the models above, is the packing fraction of the crumbled fuel, and is a function of and defined later. The reduced thermal polarizability is given by: where is the thermal conductivity of the gas surrounding the crumbled fuel particles. The function is approximated by: where Jernkvist and Massih (2015) used best fit approximations to the tabulated values of Chiew and Glandt (1983) to obtain:
Porosity Correction in the high burnup structure
Our current approach uses an ad hoc porosity model to model the porosity evolution due to the high burnup structure (HBS) formation. We calibrated a surrogate model that is obtained from measured local burnup and measured porosity. The porosity, is given by where is the local burnup (GWd/t). The porosity-burnup relation is illustrated in Figure 4 along with the experimental data.

Figure 4: A comparison of the surrogate model as a function of local burnup (experimental data from Spino et al. (1996), Spino and Papaioannou (2000), and Spino et al. (2006)).
The rim thermal conductivity is computed using three methods according to
(23)
(24)
Maxwell-Eucken model:
(25) where is the rim thermal conductivity, is the thermal conductivity of conducting pores, is the porosity (dimensionless), and is the thermal conductivity of the continuous material.
It is assumed that the pores are filled with xenon. Thus, the pore thermal conductivity is computed using the following relation:
where is the temperature (K).
Note that the second method is expressed in terms of a third-order polynomial. The rim thermal conductivity is computed by solving this cubic equation given in Eq. (24). There may be three possible solutions. The highest real root is assigned for the rim thermal conductivity, . We employ a root-finding algorithm to solve the cubic equation analytically (Toptan et al., 2020).
When modeling the porosity correction due the formation of the HBS, the amount of fuel at given location within the fuel that has restructured needs to be known. This hbs_volume_fraction is computed in the HighBurnupStructureFormation model. Using this volume fraction a weighted average of is used to compute the effective thermal conductivity:
Specific Heat Capacity
The specific heat capacity (J/kg-K) is expressed by (26) where is the temperature (K), is the oxygen-to-metal ratio (dimensionless), and is the universal gas constant (8.3145 J/mol-K). The empirical coefficients (, , , , and ) are tabulated in Table 3 for UO, and GdO.
The specific heat capacity of -doped UO fuel is computed as: where is the fraction of gadolina or plutonium content (dimensionless) and is the specific heat capacity for UO, and GdO.
Table 3: The empirical constants used in Eq. (26) from Luscher et al. (2015).
| Constant | (J/kg-K) | (J/kg-K) | (J/kg) | (K) | (J/mol) |
|---|---|---|---|---|---|
| UO | 296.7 | 2.4310 | 8.74510 | 535.285 | 1.57710 |
| GdO | 315.86 | 4.04410 | 0.0 | 348.0 | 0.0 |
Example Input Syntax
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[fuel_thermal]
type = UO2Thermal<<<{"description": "Computes thermal conductivity and specific heat capacity of uranium dioxide fuel.", "href": "UO2Thermal.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
thermal_conductivity_model<<<{"description": "The thermal conductivity model."}>>> = FINK_LUCUTA
initial_porosity<<<{"description": "Initial porosity. Must be between 0.0 and 1.0."}>>> = 0.0
temperature<<<{"description": "Coupled temperature"}>>> = temperature
burnup_function<<<{"description": "Burnup function"}>>> = burnup
[]
[](test/tests/sifgrs/uo2/athermal_release.i)Input Parameters
- Gd_content0Weight fraction of gadolinium in fuel.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Weight fraction of gadolinium in fuel.
- axial_relocation_objectName of the AxialRelocationUserObject that determines whether the fuel has crumbled.
C++ Type:UserObjectName
Controllable:No
Description:Name of the AxialRelocationUserObject that determines whether the fuel has crumbled.
- base_nameOptional parameter that allows the user to define multiple material systems on the same block, i.e. for multiple phases
C++ Type:std::string
Controllable:No
Description:Optional parameter that allows the user to define multiple material systems on the same block, i.e. for multiple phases
- 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
- burnupCoupled burnup
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled burnup
- burnup_functionBurnup function
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Burnup function
- burnup_materialMaterial property name for burnup.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Material property name for burnup.
- 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.
- gap_thermal_conductivityThe layered average thermal conductivity across the gas gap.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The layered average thermal conductivity across the gas gap.
- hbs_porosity_correctionNONEThe porosity correction method for the thermal conductivity model in the high burnup structure.
Default:NONE
C++ Type:MooseEnum
Options:NONE, KAMPF, LEE, MAXWELLEUCKEN
Controllable:No
Description:The porosity correction method for the thermal conductivity model in the high burnup structure.
- initial_porosity0.05Initial porosity. Must be between 0.0 and 1.0.
Default:0.05
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Initial porosity. Must be between 0.0 and 1.0.
- model_hbs_formationFalseFlag on whether to take into account the volume fraction of high burnup structure that has formed on the thermal conductivity calculation.
Default:False
C++ Type:bool
Controllable:No
Description:Flag on whether to take into account the volume fraction of high burnup structure that has formed on the thermal conductivity calculation.
- oxy_to_metal_ratio2Oxygen-to-metal ratio.
Default:2
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Oxygen-to-metal ratio.
- porosityCoupled porosity
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled porosity
- porosity_materialFalseWhether a material property for porosity is supplied.
Default:False
C++ Type:bool
Controllable:No
Description:Whether a material property for porosity is supplied.
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_factor1Optional scaling factor applied to the overall specific heat.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Optional scaling factor applied to the overall specific heat.
- thermal_conductivity_scale_factor1Optional scaling factor applied to the overall thermal conductivity.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Optional scaling factor applied to the overall thermal conductivity.
Advanced: Scaling Factors Parameters
Input Files
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
- (test/tests/uo2_thermal/Ronchi/ad_test.i)
- (test/tests/uo2_thermal/Ronchi/test.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza_1pt5.i)
- (test/tests/radial_power_factor/radial_power_factor_restart2.i)
- (test/tests/triso_failure/triso_ipyc_characteristic_strength.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL009/BFL009.i)
- (examples/3D_rodlet_3pellets/smeared/smearedTest3D.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
- (assessment/LWR/validation/Super_Ramp/analysis/Super_Ramp_Base.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/scaled_swelling.i)
- (assessment/LWR/validation/IFA_431/analysis/IFA_431_General.i)
- (examples/multiapp/pin2.i)
- (test/tests/uo2_thermal/FinkLucuta/test.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_809/IFA_535_rod_809.i)
- (test/tests/triso_failure/triso_1d_ipyc_failure.i)
- (assessment/LWR/validation/Riso_GE7_ZX115/analysis/Riso_GE7_1pt5.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1.i)
- (assessment/LWR/validation/HbepR1/analysis/A184/HbepR1_A184.i)
- (examples/1.5D_restart/Smeared_1.5D.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE067/UFE067.i)
- (test/tests/triso_failure/triso_1d_pd_penetration.i)
- (test/tests/sifgrs/uo2/swelling_porosity.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_1/case_1_1D.i)
- (assessment/LWR/validation/IFA_681/analysis/rod1/IFA_681_rod1.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
- (examples/TRISO/one_layer/2D/one_layer.i)
- (workshop/bison_example/Smeared.i)
- (test/tests/ThermalFuel_error_messages/thermal_conductivity_error.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_tenslice.i)
- (assessment/LWR/validation/HbepR1/analysis/A364/HbepR1_A364.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_4b/case_4b_1D.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/TSQ002.i)
- (test/tests/layered_1D/radial_power_factor.i)
- (examples/TRISO/full_particle/2D/full_particle.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_4a/case_4a_1D.i)
- (test/tests/thermalUO2/thermalUO2_test.i)
- (test/tests/uo2_thermal/NFIR/ad_test.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_uo2.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/densification_only.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/densification_only.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/REP_Na_4.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_2/case_2_1D.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_10/IFA_650_10_part1.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza.i)
- (assessment/LWR/validation/Tribulation/analysis/BN3X15/BN3X15.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.i)
- (assessment/LWR/validation/Tribulation/analysis/BN1X4/BN1X4.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ022/TSQ022_1pt5.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/solid_swelling_only_small_strain.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2.i)
- (test/tests/standard_lwr_outputs_action/mini_complete_rod.i)
- (assessment/LWR/validation/IFA_636/analysis/IFA_636_solid_swell/IFA_636_solid_swell.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
- (assessment/LWR/validation/HBEP/analysis/BK370/HBEP_BK370.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_hundredslice.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_10/case_10_1D.i)
- (test/tests/radial_power_factor/rpf_initial_burnup.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM073/BFM073.i)
- (assessment/LWR/validation/FUMEXII_Regate/analysis/Regate_smeared.i)
- (test/tests/triso_failure/triso_1d_failure_error.i)
- (test/tests/example_problem_test/example_problem_test.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_13/case_13_1D.i)
- (test/tests/radial_power_factor/radial_power_factor.i)
- (test/tests/uo2_transient_fission_gas_release/uo2_pulverization_phasefield2_transient_FGR.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_gas_communication.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/TSQ002_1pt5.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM034/BFM034.i)
- (test/tests/uo2_thermal/HBSporosity/test.i)
- (test/tests/ifba_he_production/ifba_examp_template.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2c/27_2c.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM156/BFM156.i)
- (test/tests/triso_failure/ad_ipyc_characteristic_strength.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/reloc_recov_escore_mod_rz.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/swelling.i)
- (test/tests/thermalUO2/thermalUO2_jac_test.i)
- (test/tests/standard_lwr_outputs_action/four_pellets.i)
- (examples/TRISO/full_particle/1D/full_particle_1D.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2a/27_2a.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2.i)
- (examples/TRISO/two_layers/2D/two_layers.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.i)
- (test/tests/burnup_action/burnup_without_actions.i)
- (test/tests/radial_power_factor/radial_power_factor_restart1.i)
- (test/tests/sifgrs/uo2/athermal_release.i)
- (test/tests/axial_relocation/uo2_pulverization_phasefield2.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2_1p5d_fr_frd.i)
- (examples/2D-RZ_rodlet_10pellets/smeared_cracking/SmearedCracking.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_4c/case_4c_1D.i)
- (examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar/2D_discrete_finiteStrain_mortar.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part1.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/gas_only.i)
- (test/tests/standard_lwr_outputs_action/pellet_only_ad.i)
- (test/tests/sifgrs/uo2/ad_swelling_porosity.i)
- (examples/multiapp/pin1.i)
- (test/tests/thermalUO2/ad_thermalUO2_jac_test.i)
- (workshop/bison_example/Discrete.i)
- (assessment/LWR/validation/Riso_Base_sub.i)
- (examples/3D_rodlet_3pellets/discrete_half_symm/3d_3pellets.i)
- (assessment/LWR/validation/FUMEXII_Regate/analysis/discrete/Regate_discrete.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/swelling.i)
- (test/tests/standard_lwr_outputs_action/mini_complete_rod_1D.i)
- (examples/accident_tolerant_fuel/uo2_coated_zircaloy/uo2_coated_zircaloy.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1_1p5d_fr_ffrd.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_810/IFA_535_rod_810.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ022/TSQ022.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part1_1p5d_fr_frd.i)
- (test/tests/uo2_thermal/Toptan/ad_test.i)
- (test/tests/axial_relocation/crumbled_thermal_conductivity.i)
- (test/tests/triso_failure/triso_1d_failure.i)
- (test/tests/radial_power_factor/radial_power_factor_u3si2.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/gas_only.i)
- (assessment/LWR/validation/OSIRIS_H09/analysis/OSIRIS_H09.i)
- (examples/TRISO/accident_simulation/triso1D_accident.i)
- (examples/2D_plane_strain_fretting_wear/fretting-wear-initial-dyn-exc.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part2.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/total_swelling_rz.i)
- (assessment/LWR/validation/IFA_562/analysis/IFA_562_Base.i)
- (examples/3D_rodlet_3pellets/discrete_full/3d_3pellets_mortar.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.i)
- (examples/spent_fuel/full_life_cycle_coarse/discrete.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_10/IFA_650_10_part2.i)
- (test/tests/standard_lwr_outputs_action/two_pellet_only.i)
- (test/tests/axial_relocation/axial_relocation_eigenstrain_action_phasefield.i)
- (assessment/LWR/validation/HbepR1/analysis/H8364/HbepR1_H8364.i)
- (assessment/LWR/benchmark/RIA_benchmark/analysis/RIA_benchmark.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM043/BFM043.i)
- (assessment/LWR/validation/IFA_597_3/analysis/rod_7/IFA_597_rod7_frictionless.i)
- (workshop/bison_example/Discrete_mortar.i)
- (examples/TRISO/accident_simulation/triso2D_accident.i)
- (test/tests/triso/base_irradiation/triso1D_accident.i)
- (test/tests/ifba_he_production/doc/fill_gas_xenon.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/scaled_swelling.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL031/BFL031.i)
- (test/tests/uo2_thermal/FinkLucuta/ad_test.i)
- (test/tests/triso_failure/triso_1d_layer_stress_strength.i)
- (test/tests/uo2_thermal/HBSporosity/ad_test.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFG092/BFG092.i)
- (test/tests/uo2_thermal/NFImod/test.i)
- (test/tests/ThermalFuel_error_messages/porosity_error.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/solid_swelling_only.i)
- (assessment/LWR/validation/RE_Ginna_Rodlets/analysis/RE_Ginna_Rodlets_Base.i)
- (assessment/LWR/validation/HBEP/analysis/BK365/HBEP_BK365.i)
- (assessment/LWR/validation/IFA_515_RodA1/analysis/IFA515.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1.i)
- (assessment/LWR/validation/IFA_681/analysis/rod3/IFA_681_rod3.i)
- (examples/2D-RZ_rodlet_10pellets/smeared_cracking/ADSmearedCracking.i)
- (test/tests/uo2_thermal/Halden/negative_temperature_exception.i)
- (examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets_mortar.i)
- (test/tests/triso_failure/ad_triso_1d_weibull_probability.i)
- (assessment/LWR/validation/IFA_681/analysis/rod2/IFA_681_rod2.i)
- (examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar_friction/2D_discrete_finiteStrain_mortar_friction.i)
- (test/tests/ThermalFuel_error_messages/no_burnup_error.i)
- (examples/temperature_tables/layered1D_cases/1pt5D.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2d/27_2d.i)
- (test/tests/axial_relocation/ad_uo2_pulverization_phasefield.i)
- (test/tests/uo2_thermal/Toptan/test.i)
- (test/tests/uo2_thermal/Halden/test.i)
- (examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part2.i)
- (assessment/LWR/validation/IFA_519/analysis/IFA_519_Base.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/solid_swelling_only_small_strain.i)
- (test/tests/ifba_he_production/doc/fill_gas_helium.i)
- (examples/restart/Quad8.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/gas_only2.i)
- (assessment/LWR/validation/IFA_677/analysis/IFA_677_Base.i)
- (test/tests/triso_failure/ad_triso_1d_failure.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_811/IFA_535_rod_811.i)
- (test/tests/triso_failure/triso_1d_weibull_probability.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM071/BFM071.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/solid_swelling_only.i)
- (examples/accident_tolerant_fuel/uo2_fecral/uo2_fecral.i)
- (examples/Burnup_profile_displaced_mesh/RadialProfileSampler.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part3_gas_communication.i)
- (examples/TRISO/accident_simulation/triso2D_accident_ad.i)
- (assessment/LWR/benchmark/AREVA_idealized_case/analysis/AREVA_idealized_case.i)
- (test/tests/uo2_thermal/NFIR/test.i)
- (test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
- (examples/2D-RZ_rodlet_10pellets/quad8/Quad8.i)
- (assessment/TRISO/validation/AGR-2/AGR-2_UO2.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE019/UFE019.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM070/BFM070.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_3/case_3_1D.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
- (examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain/2D_discrete_finiteStrain.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_9/case_9_1D.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part2_1p5d_fr_ffrd.i)
- (test/tests/standard_lwr_outputs_action/annular_mini_rod.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-2kW.i)
- (test/tests/axial_relocation/uo2_pulverization_phasefield.i)
- (examples/1.5D_rodlet_10pellets/1_5D.i)
- (test/tests/axial_relocation/ad_uo2_pulverization_mesoscale.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_twentyslice.i)
- (test/tests/thermalUO2/ad_thermalUO2_test.i)
- (assessment/LWR/validation/Super_Ramp/analysis/PK62/PK62_weighted_gap_VCP.i)
- (test/tests/ifba_he_production/ifba_only_template.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
- (examples/2D_plane_strain_fretting_wear/fretting-wear-initial.i)
- (test/tests/burnup_action/burnup_with_actions.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_812/IFA_535_rod_812.i)
- (test/tests/axial_relocation/uo2_pulverization_mesoscale.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-1kW.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/RIA/REP_Na_4_RIA.i)
- (assessment/LWR/validation/IFA_597_3/analysis/rod_8/IFA_597_rod8_frictionless.i)
- (assessment/LWR/validation/IFA_432/analysis/IFA_432_Base.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03_ccm.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/diffusion/case_10/case_10.i)
- (assessment/LWR/validation/IFA_534/analysis/IFA_534_Base.i)
- (test/tests/radial_power_factor/radial_power_factor_inputrpf.i)
- (assessment/LWR/validation/Tribulation/analysis/BN1X3/BN1X3.i)
- (test/tests/axial_relocation/ad_uo2_pulverization_phasefield2.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_Base.i)
- (examples/TRISO/accident_simulation/triso2D_accident_mortar.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFJ027/BFJ027.i)
- (examples/2D-RZ_rodlet_10pellets/fuel_pin_geometry/fuelpingeo.i)
- (examples/1.5D_rodlet_10pellets/1_5D_friction.i)
- (test/tests/sifgrs/uo2/ad_athermal_release.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-2kW.i)
- (workshop/bison_example/Smeared_mortar.i)
- (assessment/LWR/validation/OSIRIS_J12/analysis/OSIRIS_J12.i)
- (test/tests/uo2_transient_fission_gas_release/ad_uo2_pulverization_phasefield2_transient_FGR.i)
- (test/tests/uo2_thermal/Staicu/ad_test.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW.i)
- (test/tests/standard_lwr_outputs_action/pellet_only.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_fortyslice.i)
- (test/tests/triso_failure/sub.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_fuel_rod.i)
- (assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363.i)
- (assessment/LWR/validation/IFA_636/analysis/IFA_636/IFA_636.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_2/IFA_650_2.i)
- (assessment/LWR/validation/IFA_597_3/analysis/rod_7/IFA_597_rod7_glued.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/gas_only3.i)
- (test/tests/triso_failure/triso_1d_asphericity_failure.i)
- (examples/2D_plane_strain_rod/planestrain.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_11/case_11_1D.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BEN013/BEN013.i)
- (examples/2D-RZ_rodlet_10pellets/smeared_smallStrain/Smeared_smallStrain.i)
- (test/tests/uo2_thermal/Staicu/test.i)
- (assessment/LWR/validation/IFA_716/analysis/IFA_716_Base.i)
- (test/tests/thermalUO2/thermalUO2_new_test.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/gas_only2.i)
- (test/tests/uo2_thermal/Halden/ad_test.i)
- (test/tests/uo2_thermal/NFImod/ad_test.i)
- (test/tests/uo2_transient_fission_gas_release/uo2_pulverization_transient_FGR_1D.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/total_swelling_rz.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/cracking/TSQ002_cracking.i)
References
- J. Carbajo, L. Gradyon, S. Popov, and V. Ivanov.
A review of the thermophysical properties of mox and uo2 fuels.
Journal of Nuclear Materials, 299:181–198, 2001.[BibTeX]
@ARTICLE{CarbajoJNM2001, author = "Carbajo, J. and Gradyon, L. and Popov, S. and Ivanov, V.", title = "A review of the thermophysical properties of MOX and UO2 fuels", journal = "Journal of Nuclear Materials", year = "2001", volume = "299", pages = "181-198" } - Y. C. Chiew and E. D. Glandt.
The effect of structure on the conductivity of a dispersion.
Journal of Colloid and Interface Science, 91(1):90–104, 1983.
doi:10.1016/0021-9797(83)90238-2.[BibTeX]
@article{chiew1983, author = "Chiew, Y. C. and Glandt, E. D.", title = "The effect of structure on the conductivity of a dispersion", journal = "Journal of Colloid and Interface Science", volume = "91", number = "1", year = "1983", doi = "10.1016/0021-9797(83)90238-2", pages = "90-104" } - J. K. Fink.
Thermophysical properties of uranium dioxide.
Journal of Nuclear Materials, 279(1):1–18, 2000.[BibTeX]
@ARTICLE{fink00, author = "Fink, J. K.", title = "Thermophysical properties of uranium dioxide", journal = "Journal of Nuclear Materials", year = "2000", volume = "279", pages = "1-18", number = "1", issn = "0022-3115" } - L. O. Jernkvist and A. Massih.
Model for axial relocation of fragmented and pulverized fuel pellets in distending fuel rods and its effects on fuel rod heat load.
Technical Report SSM-2015:37, Strål säkerhets myndigheten, 2015.[BibTeX]
@TECHREPORT{jernkvist2015, author = "Jernkvist, L. O. and Massih, A.", title = "Model for axial relocation of fragmented and pulverized fuel pellets in distending fuel rods and its effects on fuel rod heat load", year = "2015", number = "SSM-2015:37", institution = {Str\r{a}l s\"{a}kerhets myndigheten} } - H Kämpf and G Karsten.
Effects of different types of void volumes on the radial temperature distribution of fuel pins.
Nuclear Technology, 9(3):288–300, 1970.
doi:10.13182/NT70-A28783.[BibTeX]
@article{kampf1970, author = {K\"{a}mpf, H and Karsten, G}, title = "Effects of Different Types of Void Volumes on the Radial Temperature Distribution of Fuel Pins", journal = "Nuclear Technology", volume = "9", number = "3", pages = "288-300", doi = "10.13182/NT70-A28783", year = "1970" } - H Kleykamp.
Selection of materials as diluents for burning of plutonium fuels in nuclear reactors.
Nuclear Materials, 275:1–11, 1999.
URL: https://doi.org/10.1016/S0022-3115(99)00144-0, doi:10.1016/S0022-3115(99)00144-0.[BibTeX]
@article{kleykamp1999, author = "Kleykamp, H", title = "Selection of materials as diluents for burning of plutonium fuels in nuclear reactors", journal = "Nuclear Materials", volume = "275", pages = "1-11", doi = "10.1016/S0022-3115(99)00144-0", url = "https://doi.org/10.1016/S0022-3115(99)00144-0", year = "1999" } - D. D. Lanning, C. E. Beyer, and K. J. Geelhood.
Frapcon-3 updates, including mixed-oxide fuel properties.
Technical Report NUREG/CR-6534, Vol. 4 PNNL-11513, Pacific Northwest National Laboratory, 2005.[BibTeX]
@TECHREPORT{lanning2005, author = "Lanning, D. D. and Beyer, C. E. and Geelhood, K. J.", title = "FRAPCON-3 Updates, Including Mixed-Oxide Fuel Properties", year = "2005", number = "NUREG/CR-6534, Vol. 4 PNNL-11513", pages = "3.4", publisher = "Pacific Northwest National Laboratory", institution = "Pacific Northwest National Laboratory" } - BH Lee, YH Koo, and DS Sohn.
Rim characteristics and their effects on the thermal conductivity in high burnup UO$_2$ fuel.
Nuclear Science and Technology, 38(1):45–52, January 2001.
doi:10.1080/18811248.2001.9715006.[BibTeX]
@article{koo2001a, author = "Lee, BH and Koo, YH and Sohn, DS", title = "Rim Characteristics and Their Effects on the Thermal Conductivity in High Burnup {UO$\_2$} Fuel", journal = "Nuclear Science and Technology", volume = "38", number = "1", pages = "45-52", month = "January", doi = "10.1080/18811248.2001.9715006", year = "2001" } - P.G. Lucuta, Hj. Matzke, and I.J. Hastings.
A pragmatic approach to modelling thermal conductivity of irradiated UO$_2$ fuel: review and recommendations.
Journal of Nuclear Materials, 232(2-3):166–180, 1996.
URL: http://www.sciencedirect.com/science/article/pii/S0022311596004047, doi:10.1016/S0022-3115(96)00404-7.[BibTeX]
@ARTICLE{Lucuta1996, author = "Lucuta, P.G. and Matzke, Hj. and Hastings, I.J.", title = "A pragmatic approach to modelling thermal conductivity of irradiated {UO}$\_2$ fuel: Review and recommendations", journal = "Journal of Nuclear Materials", year = "1996", volume = "232", pages = "166-180", number = "2-3", bdsk-url-1 = "http://www.sciencedirect.com/science/article/pii/S0022311596004047", bdsk-url-2 = "http://dx.doi.org/10.1016/S0022-3115(96)00404-7", doi = "10.1016/S0022-3115(96)00404-7", issn = "0022-3115", url = "http://www.sciencedirect.com/science/article/pii/S0022311596004047" } - WJ Luscher, KJ Geelhood, and IE Porter.
Material property correlations: comparisons between FRAPCON-4.0, FRAPTRAN-2.0, and MATPRO.
Technical Report PNNL-19417 Rev. 2, Pacific Northwest National Laboratory, 9 2015.[BibTeX]
@TECHREPORT{luscher2015, author = "Luscher, WJ and Geelhood, KJ and Porter, IE", title = "Material Property Correlations: Comparisons between {FRAPCON-4.0}, {FRAPTRAN-2.0}, and {MATPRO}", year = "2015", month = "9", institution = "Pacific Northwest National Laboratory", number = "PNNL-19417 Rev. 2" } - W. F. Lyon.
Summary report: gd thermal conductivity model updates.
Technical Report ANA-P1400138-TN03 Rev. 2, Anatech Corp., 2015.[BibTeX]
@techreport{anatech_NFIR_Gd_ltr, author = "Lyon, W. F.", title = "Summary Report: Gd Thermal Conductivity Model Updates", year = "2015", number = "ANA-P1400138-TN03 Rev. 2", institution = "Anatech Corp." } - K. Ohira and N. Itagaki.
Thermal conductivity measurements of high burnup UO$_2$ pellet and a benchmark calculation of fuel center temperature.
In Proceedings of the American Nuclear Society Meeting on Light Water Reactor Fuel Performance, 541. Portland, Oregon, Mar 2 to Mar 6, 1997.[BibTeX]
@INPROCEEDINGS{ohira97, author = "Ohira, K. and Itagaki, N.", title = "Thermal conductivity measurements of high burnup {UO}$\_2$ pellet and a benchmark calculation of fuel center temperature", booktitle = "Proceedings of the American Nuclear Society Meeting on Light Water Reactor Fuel Performance", year = "1997", pages = "541", address = "Portland, Oregon", month = "Mar 2 to Mar 6," } - C Ronchi, M Sheindlin, D Staicu, and M Kinoshita.
Effect of burn-up on the thermal conductivity of uranium dioxide up to 100.000 mwdt< sup>- 1</sup>.
Journal of Nuclear Materials, 327:58–76, 2004.
doi:10.1016/j.jnucmat.2004.01.018.[BibTeX]
@ARTICLE{ronchi2004, author = "Ronchi, C and Sheindlin, M and Staicu, D and Kinoshita, M", title = "Effect of burn-up on the thermal conductivity of uranium dioxide up to 100.000 MWdt< sup>- 1", journal = "Journal of Nuclear Materials", year = "2004", volume = "327", pages = "58-76", doi = "10.1016/j.jnucmat.2004.01.018", publisher = "Elsevier" } - C. Ronchi, M. Sheindlin, M. Musella, and G.J. Hyland.
Thermal conductivity of uranium dioxide up to 2900 K from simultaneous measurement of the heat capacity and thermal diffusivity.
Journal of Applied Physics, 85:776–789, 1999.[BibTeX]
@ARTICLE{RonchiJAP1999, author = "Ronchi, C. and Sheindlin, M. and Musella, M. and Hyland, G.J.", title = "Thermal conductivity of uranium dioxide up to 2900 {K} from simultaneous measurement of the heat capacity and thermal diffusivity", journal = "Journal of Applied Physics", year = "1999", volume = "85", pages = "776-789" } - B Schulz.
Thermal conductivity of porous and highly porous materials.
High Temperatures - High Pressures, 13(6):649–660, 1981.[BibTeX]
@article{schulz1981, author = "Schulz, B", title = "Thermal conductivity of porous and highly porous materials", journal = "High Temperatures - High Pressures", volume = "13", number = "6", pages = "649-660", year = "1981" } - J Spino and D Papaioannou.
Lattice parameter changes associated with the rim-structure formation in high burn-up uo2 fuels by micro x-ray diffraction.
Journal of Nuclear Materials, 281:146–162, 2000.
doi:10.1016/S0022-3115(00)00236-1.[BibTeX]
@article{spino2000, author = "Spino, J and Papaioannou, D", title = "Lattice parameter changes associated with the rim-structure formation in high burn-up UO2 fuels by micro X-ray diffraction", journal = "Journal of Nuclear Materials", volume = "281", pages = "146-162", doi = "10.1016/S0022-3115(00)00236-1", year = "2000" } - J Spino, A D Stalios, H Santa Cruz, and D Baron.
Stereological evolution of the rim structure in PWR-fuels at prolonged irradiation: Dependencies with burn-up and temperature.
Journal of Nuclear Materials, 354:66–84, 2006.
doi:10.1016/j.jnucmat.2006.02.095.[BibTeX]
@article{spino2006, author = "Spino, J and Stalios, A D and Cruz, H Santa and Baron, D", title = "Stereological evolution of the rim structure in {PWR}-fuels at prolonged irradiation: {D}ependencies with burn-up and temperature", journal = "Journal of Nuclear Materials", volume = "354", pages = "66-84", doi = "10.1016/j.jnucmat.2006.02.095", year = "2006" } - J Spino, K Vennix, and M Coquerelle.
Detailed characterisation of the rim microstructure in PWR fuels in the burn-up range 40-67 GWd/tM.
Journal of Nuclear Materials, 231:179–190, 1996.
doi:10.1016/0022-3115(96)00374-1.[BibTeX]
@article{spino1996, author = "Spino, J and Vennix, K and Coquerelle, M", title = "Detailed characterisation of the rim microstructure in {PWR} fuels in the burn-up range {40-67 GWd/tM}", journal = "Journal of Nuclear Materials", volume = "231", pages = "179-190", doi = "10.1016/0022-3115(96)00374-1", year = "1996" } - D Staicu, VV Rondinella, and others.
Effect of burn-up on the thermal conductivity of uranium-gadolinium dioxide up to 100 GWd/tHM.
Journal of Nuclear Materials, 453:259–268, 2014.
doi:10.1016/j.jnucmat.2014.07.006.[BibTeX]
@article{staicu2014, author = "Staicu, D and Rondinella, VV and others", title = "Effect of burn-up on the thermal conductivity of uranium-gadolinium dioxide up to 100 {GWd/tHM}", journal = "Journal of Nuclear Materials", volume = "453", pages = "259-268", doi = "10.1016/j.jnucmat.2014.07.006", year = "2014" } - A. Toptan, G. Pastore, R. L. Williamson, J. D. Hales, and S. R. Novascone.
Engineering-scale modeling of thermal conductivity in BISON for UO2 and Gd bearing UO2 fuels.
submitted to Journal of Nuclear Materials, ():, 2020.
doi:.[BibTeX]
@article{Toptan2020b, author = "Toptan, A. and Pastore, G. and Williamson, R. L. and Hales, J. D. and Novascone, S. R.", title = "Engineering-scale modeling of thermal conductivity in {BISON} for {UO2} and {Gd} bearing {UO2} fuels", journal = "submitted to Journal of Nuclear Materials", volume = "", number = "", pages = "", doi = "", year = "2020" } - Aysenur Toptan, Jason D. Hales, Richard L. Williamson, Stephen R. Novascone, Giovanni Pastore, and David J. Kropaczek.
Modeling of gap conductance for LWR fuel rods applied in the BISON code.
Journal of Nuclear Science and Technology, 57(8):963–974, 2020.
doi:10.1080/00223131.2020.1740808.[BibTeX]
@article{TOPTAN2020963, author = "Toptan, Aysenur and Hales, Jason D. and Williamson, Richard L. and Novascone, Stephen R. and Pastore, Giovanni and Kropaczek, David J.", title = "Modeling of gap conductance for {LWR} fuel rods applied in the {BISON} code", journal = "Journal of Nuclear Science and Technology", year = "2020", volume = "57", number = "8", pages = "963--974", issn = "0022-3131", doi = "10.1080/00223131.2020.1740808" } - A. Marion (NEI) letter dated June 13, 2006 to H. N. Berkow (USNRC/NRR).
Safety Evaluation by the Office of Nuclear Reactor Regulation of Electric Power Research Institute (EPRI) Topical Report TR-1002865, "Topical Report on Reactivity Initiated Accidents: Bases for RIA Fuel rod Failures and Core Coolability Criteria".
http://pbadupws.nrc.gov/docs/ML0616/ML061650107.pdf, 2006.[BibTeX]
@MISC{nrc_nfir_ltr, author = "{A. Marion (NEI) letter dated June 13, 2006 to H. N. Berkow (USNRC/NRR)}", title = {{Safety Evaluation by the Office of Nuclear Reactor Regulation of Electric Power Research Institute ({EPRI}) Topical Report TR-1002865}, {"Topical Report on Reactivity Initiated Accidents: Bases for RIA Fuel rod Failures and Core Coolability Criteria"}}, howpublished = "http://pbadupws.nrc.gov/docs/ML0616/ML061650107.pdf", year = "2006", chapter = "Appendix C-1.A", number = "{Response to Requests for Additional Information (RAI's) NRR Safety Evaluation Report - Project No. 689}", pages = "C-1-15, C-1-16", type = "Letter" }
(test/tests/sifgrs/uo2/athermal_release.i)
# This is a test for the athermal release capability included in the Sifgrs fission gas behavior model.
# The model of B.J. Lewis (JNM 148, 28, 1987) is adopted for calculating the contribution to fission gas
# release (FGR) arising from the surface-fission release mechanisms (recoil and knockout).
# Since athermal release depends on the total pellet surface area (geometrical surface + cracked surface),
# an estimation of the number and length of cracks for each pellet is introduced, based on concepts from
# M. Oguma (NED 76, 35, 1983) and D.R. Olander (Fundamental aspects of nuclear reactor fuel elements,
# Berkeley, 1976). For this purpose, the subprograms PelletIdAux and PelletBrittleZone are employed.
# The athermal release model can be activated by specifying ath_model = true. It is also necessary to
# specify the name of the linear power function (see below).
# A single pellet - constant power problem is considered for this test.
# In order to isolate the athermal release, the concurrent thermal gas release is not calculated
# (by setting the fractional bubble coverage at grain boundary saturation to infinite,
# i.e., saturation_coverage = 1.e+20).
# Also, the fission gas swelling is not calculated in this test. The results demonstrate that
# the athermal release model provides a contribution to FGR independent of thermal release and given
# by an approximately constant fraction of the generated gas, released upon creation due to the recoil
# and knockout mechanisms.
initial_fuel_density = 10417.
[GlobalParams]
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
coord_type = RZ
patch_size = 1000
[mesh]
type = FileMeshGenerator
file = single_pellet_2d.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[AuxVariables]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[crack_length]
order = CONSTANT
family = MONOMIAL
[]
[gas_ath_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = linpow_ath_test.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peaking_factors.csv
scale_factor = 1
axis = 1
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = 2
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 2
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 12
num_axial = 9
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1.
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[pelletid]
type = PelletIdAux
block = 2
variable = pellet_id
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = initial
[]
[cracklen]
type = MaterialRealAux
variable = crack_length
property = crack_length
[]
[fgath]
type = MaterialRealAux
variable = gas_ath_3
property = gas_concentration_athermal_release_volume
[]
[]
[BCs]
[convective_clad_surface]
type = ConvectiveFluxBC
boundary = '10'
variable = temperature
rate = 7500.
initial = 300.
final = 515.5
duration = 1.0e+04
[]
[top_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '21'
[]
[bottom_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '20'
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
temperature = temperature
burnup_function = burnup
[]
[density2]
type = ParsedMaterial
block = 2
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 2
temperature = temperature
burnup_function = burnup
saturation_coverage = 1.e+20
ath_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 2
pellet_id = pellet_id
temperature = temperature
pellet_radius = 0.005305
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_max_its = 100
l_tol = 1.e-04
nl_max_its = 15
nl_rel_tol = 1.e-8
nl_abs_tol = 1.e-8
start_time = 0.
end_time = 1.e+08
num_steps = 5000
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.e+06
time_t = '0 10000 '
time_dt = '2.e+03 1.e+07'
[]
[]
[Postprocessors]
[gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 2
[]
[delta_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = delta_gas_concentration_generated_total
block = 2
outputs = csv
[]
[gas_intragranular]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_intra_total
block = 2
outputs = csv
[]
[gas_intergranular]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume
block = 2
outputs = csv
[]
[gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 2
[]
[gas_released_athermal]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_athermal_release_volume
block = 2
outputs = csv
[]
[gas_released_total]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
block = 2
outputs = csv
[]
[]
[Outputs]
exodus = true
csv = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
# This file was created using BIF with the following inputs:
# FK05/FK05.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/uo2_thermal/Ronchi/ad_test.i)
# This test case is prepared to test the thermal conductivity using the Ronchi model.
#
# The temperature is ramped on all BCs of the unit line from 500K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = ADBurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = ADFunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = RONCHI
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ADParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/uo2_thermal/Ronchi/test.i)
# This test case is prepared to test the thermal conductivity using the Ronchi model.
#
# The temperature is ramped on all BCs of the unit line from 500K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = BurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = RONCHI
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza_1pt5.i)
# Model is of a 10 slice pellet stack in 1.5D
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.20435313e-11 # J/fission (200 MeV)
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.005305
pellet_bottom_coor = 0.00226
fuel_height = 0.0127
include_clad = false
include_plenum = false
clad_gap_width = 0
clad_thickness = 0
slices_per_block = 10
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 7.5e-6
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '-100 0 100 1e8'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[]
[BCs]
[fuel_wall_temp]
type = DirichletBC
variable = temp
boundary = '10'
value = 673
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = fuel
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 6
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
execute_on = linear
burnup_function = burnup
variable = temp
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127
[]
[ave_fission_rate]
type = ElementAverageValue
block = fuel
variable = fission_rate
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 165 # Paraview GlobalNodeID 166 at (0.0, 0.009245)
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = false
color = false
print_linear_residuals = true
[csv]
type = CSV
execute_on = final
[]
[chkfile]
type = CSV
show = 'burnup fis_gas_percent fuel_center_temperature rod_total_power'
execute_on = final
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'fis_gas_percent >= 0.01'
[]
[]
(test/tests/radial_power_factor/radial_power_factor_restart2.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false #Small strain doesn't require
[mesh]
type = FileMeshGenerator
file = 1x10.e
[]
[]
[Problem]
restart_file_base = radial_power_factor_restart1_out_cp/0280
# initial condition is overriding the restarted temp variable
allow_initial_conditions_with_restart = true
[]
[Functions]
[ramp]
type = PiecewiseLinear
x = '0 7e7'
y = '1373.15 1473.15'
[]
[power]
type = ParsedFunction
expression = '20000'
[]
[axial_power_factor]
type = ParsedFunction
expression = '1'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1373.15
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[solid]
block = 1
strain = small
incremental = true
add_variables = true
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 1
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
axial_power_profile = axial_power_factor
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[BCs]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 3
function = ramp
[]
[temp]
type = DirichletBC
variable = temp
boundary = 1
value = 1373.15
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.e-5
stress_free_temperature = 1373.15
eigenstrain_name = thermal_strain
[]
[thermal]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup
initial_porosity = 0
thermal_conductivity_model = FINK_LUCUTA
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
l_tol = 1e-5
start_time = 28000000
dt = 100000
num_steps = 700
end_time = 70000000
[]
[Outputs]
execute_on = 'timestep_end'
file_base = radial_power_factor_out
time_step_interval = 20
exodus = true
show = 'fission_rate burnup N235 N236 N238 N239 N240 N241 N242 RPF'
[]
(test/tests/triso_failure/triso_ipyc_characteristic_strength.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
block = SiC
prop_names = 'characteristic_strength'
[]
[characteristic_strength_PyC]
type = PyCCharacteristicStrength
temperature = temp
X = 1.02
flux_conversion_factor = 0.85
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[characteristic_strength]
type = ElementExtremeMaterialProperty
mat_prop = characteristic_strength
block = IPyC
value_type = max
[]
[flence]
type = ElementExtremeMaterialProperty
mat_prop = fast_neutron_fluence
block = IPyC
value_type = max
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL009/BFL009.i)
################################################################################
#
# Description: Calvert Cliffs BFL009
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFL009_power.csv
# axial peaking factor file BFL009_axial_peaking.csv
# flux boundary condition file BFL009_fast_flux.csv
#
################################################################################
initial_fuel_density = 10460.45
[GlobalParams]
density = ${initial_fuel_density} #95.332 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = BFL009_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFL009_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFL009_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 167148794 167149154'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 167148794 167149154'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFL009_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0013589
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '9 13'
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10460.45
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 167149154
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_2984]
type = NodalVariableValue
nodeid = 2983
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/3D_rodlet_3pellets/smeared/smearedTest3D.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} # initial fuel density 95.0% of theoretical (10980 kg/m3)
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
patch_size = 20
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = smearedTest3.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 580
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1e-4
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_z_all]
type = DirichletBC
variable = disp_z
boundary = 13
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
end_time = 3.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
linear_iteration_ratio = 100
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[pellet_volume]
type = InternalVolume
boundary = 8
outputs = exodus
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_total_power] # should be 1/4 of the rod_input_power as we are using in quarter symmetry
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_history
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'fission_gas_released plenum_pressure interior_temp gas_volume'
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/Super_Ramp/analysis/Super_Ramp_Base.i)
#This is a partial input file base with information/features common to several experiments within this assessment
#NOTE: This file will NOT run on its own, it requires a PK#X.params file and a PK##.params file to run
# physical constants
R = 8.3143 # (J/K*mol) -- THIS SHOULD BE EDITED TO USE PHYSICALCONSTANTS' VALUE
# fuel isotope fractions and fission energy
energy_per_fission = 3.28451e-11 # (J/fission)
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# rod geometry
clad_bot_gap_height = 1.0e-3 # (m)
# variable and kernel initial values
initial_temperature = 293.15 # (K)
gravity_constant = -9.81 # (m/s^2)
# fuel/cladding contact
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
roughness_secondary = 1.0e-6 # (m)
roughness_primary = 2.0e-6 # (m)
roughness_coef = 3.2
jump_distance_model = LANNING
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
# plenum parameters
initial_pressure = 2.25e6 # (Pa)
startup_time = 0 # (s)
# fuel/clad material properties
fuel_cracking_stress = 1.68e8
stress_free_temperature = 293.15 # (K)
clad_density = 6550.0 # (kg/m^3)
# numerical options
l_max_its = 100
l_tol = 1e-4
nl_max_its = 30
start_time = 0.0 # s
dtmin = 1.0 # s
[GlobalParams]
density = ${fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
initial_porosity = ${initial_fuel_porosity}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = ${number_pellets}
pellet_height = ${pellet_height}
pellet_outer_radius = ${pellet_outer_radius}
pellet_mesh_density = customize
nx_p = 11
ny_p = 84
clad_mesh_density = customize
nx_c = 4
ny_c = 84
clad_gap_width = ${clad_gap_width}
clad_thickness = ${clad_thickness}
clad_bot_gap_height = ${clad_bot_gap_height}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
clad_top_gap_height = ${clad_top_gap_height}
ny_cu = 3
ny_cl = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_power_factors]
type = PiecewiseBilinear
data_file = ${axial_power_factors_data_file}
axis = 1
[]
[clad_out_temp]
type = PiecewiseLinear
data_file = ${clad_out_temp_data_file}
format = columns
[]
[axial_temp_factors]
type = PiecewiseBilinear
data_file = ${axial_temp_factors_data_file}
axis = 1
[]
[clad_temp_bc]
type = CompositeFunction
functions = 'clad_out_temp axial_temp_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = ${coolant_pressure_data_file}
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
format = columns
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = ${initial_grain_radius}
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = ${initial_fuel_porosity}
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
temperature = temperature
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
temperature = temperature
add_variables = true
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = ${gravity_constant}
block = '1 3'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temperature
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[porosity]
type = PorosityAuxUO2
block = pellet
variable = porosity
execute_on = linear
[]
[pelletid]
type = PelletIdAux
block = pellet
variable = pellet_id
fuel_pin_geometry = pin_geometry
number_pellets = ${number_pellets}
execute_on = initial
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = ${friction_coefficient}
c_normal = ${c_normal}
c_tangential = ${c_tangential}
tangential_lm_scaling = ${tangential_lm_scaling}
normal_lm_scaling = ${normal_lm_scaling}
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = ${roughness_secondary}
roughness_primary = ${roughness_primary}
roughness_coef = ${roughness_coef}
plenum_pressure = plenum_pressure
jump_distance_model = ${jump_distance_model}
contact_pressure = ${contact_pressure}
thermal_lm_scaling = ${thermal_lm_scaling}
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = 5
outer_surfaces = 10
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_pressure}
startup_time = ${startup_time}
R = ${R}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = ${fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
density = ${fuel_density}
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
burnup_function = burnup
initial_grain_radius = ${initial_grain_radius}
[]
[fuel_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = ${fuel_cracking_stress}
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
hydrostatic_stress = hydrostatic_stress
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
res_param_option = HETEROGENEOUS_WHITE
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${clad_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
fuel_pin_geometry = pin_geometry
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ${petsc_options_value}
line_search = 'none'
verbose = true
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = 1
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = ${optimal_iterations}
iteration_window = ${iteration_window}
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temperature
nodeid = 3110 #Mesh dependent!
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[midplane_hoop_strain_inner_clad]
type = ElementalVariableValue
elementid = 209 # Mesh dependent
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[midplane_hoop_stress_inner_clad]
type = ElementalVariableValue
elementid = 209 # Mesh dependent
variable = hoop_stress
execute_on = 'initial timestep_end'
[]
[midplane_contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 3141 # Mesh dependent
execute_on = 'initial timestep_end'
[]
[total_rod_integral_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[total_rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${scale_factor}
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[midplane_clad_outer_temp]
type = NodalVariableValue
nodeid = 757 # Mesh dependent
variable = temperature
[]
[midplane_clad_inner_temp]
type = NodalVariableValue
nodeid = 747 # Mesh dependent
variable = temperature
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = false
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fission_gas_released_percentage central_fuel_temp midplane_contact_pressure'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[pbz]
type = PelletBrittleZone
block = pellet
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = ${number_pellets}
execute_on = 'initial linear'
[]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/scaled_swelling.i)
# @Requirement F2.20
# Test of combined swelling and densification (1000K) with scaling factors on
# the solid and gaseous swelling strain components. These scaling factors are
# available for calibration and sensitivity analyses.
#
# In this test the burnup of the fuel is increased from 0 to 0.05 FIMA. The
# correct use of scaling factors on both the solid and gaseous swelling strains
# is verified by comparing the gas_swelling and solid_swelling columns in the
# postprocessor tables from the swelling.i test in this directory shown below:
# Burnup Densfication Gaseous Swelling Solid Swelling Volumetric Swelling
# (FIMA) Strain (/) Strain (/) Strain (/) Strain (/)
#-------------------------------------------------------------------------------
# 0 0 0 0 0
# 0.005 -9.739705e-03 1.338712e-04 2.908406e-03 -6.697429e-03
# 0.010 -9.993225e-03 1.867821e-04 5.816811e-03 -3.989632e-03
# 0.015 -9.999824e-03 2.076944e-04 8.725217e-03 -1.066913e-03
# 0.020 -9.999995e-03 2.159597e-04 1.163362e-02 1.849586e-03
# 0.025 -1.000000e-02 2.192265e-04 1.454203e-02 4.761254e-03
# 0.030 -1.000000e-02 2.205176e-04 1.745043e-02 7.670951e-03
# 0.035 -1.000000e-02 2.210279e-04 2.035884e-02 1.057987e-02
# 0.040 -1.000000e-02 2.212296e-04 2.326724e-02 1.348847e-02
# 0.045 -1.000000e-02 2.213093e-04 2.617565e-02 1.639696e-02
# 0.050 -1.000000e-02 2.213408e-04 2.908406e-02 1.930540e-02
#
# To the postprocessor columns from this test illustrated in the next table.
# Both the gaseous swelling strain and solid swelling strain should be 1.2 times
# the value in the table above. The volumetric swelling strain in both cases is
# the sum of the densification, gaseous swelling and solid swelling strains:
#
# deltaV/V = densification strain + gaseous swelling strain + solid swelling strain
#
# which is verified by the volumetric swelling strain column. The results in the
# table verify that a scaling factor of 1.2 on both solid and gaseous swelling
# strain components is working correctly.
#
# Burnup Densfication Gaseous Swelling Solid Swelling Volumetric Swelling
# (FIMA) Strain (/) Strain (/) Strain (/) Strain (/)
#-------------------------------------------------------------------------------
# 0 0 0 0 0
# 0.005 -9.739705e-03 1.606455e-04 3.490087e-03 -6.088973e-03
# 0.010 -9.993225e-03 2.241385e-04 6.980173e-03 -2.788913e-03
# 0.015 -9.999824e-03 2.492333e-04 1.047026e-02 7.196694e-04
# 0.020 -9.999995e-03 2.591516e-04 1.396035e-02 4.219503e-03
# 0.025 -1.000000e-02 2.630718e-04 1.745043e-02 7.713505e-03
# 0.030 -1.000000e-02 2.646211e-04 2.094052e-02 1.120514e-02
# 0.035 -1.000000e-02 2.652335e-04 2.443061e-02 1.469584e-02
# 0.040 -1.000000e-02 2.654755e-04 2.792069e-02 1.818617e-02
# 0.045 -1.000000e-02 2.655712e-04 3.141078e-02 2.167635e-02
# 0.050 -1.000000e-02 2.656090e-04 3.490087e-02 2.516647e-02
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'fuelthermal_strain swell'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.05'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[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
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
solid_swelling_scale_factor = 1.2
gaseous_swelling_scale_factor = 1.2
total_densification = 0.01
eigenstrain_name = swell
initial_fuel_density = 10430.0
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = '1 2 3 4 5 6 7'
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1000.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
[]
[densification]
type = ElementAverageValue
variable = densification
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
[]
[]
[Outputs]
exodus = true
file_base = scaled_swelling_out
[]
(assessment/LWR/validation/IFA_431/analysis/IFA_431_General.i)
# This is a partial input file base with information/features common to all the fuel rods in this assessment with
# no action option.
# NOTE: This file will not run on its own, it is used to create a complete input file in the rod-specific input files.
# Fuel material properties
fuel_thermal_expansion_coeff = 10e-6 # K^-1
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_density = 6551.0 # kg/m^3
# Relocation
relocation_activation1 = 5000 # W/m
[GlobalParams]
volumetric_locking_correction = false
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4 5'
initial_condition = ${initial_grain_radius}
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = '3 4 5'
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = '3 4 5'
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4 5'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[Burnup]
[burnup]
block = '3 4 5'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
num_radial = 81
num_axial = 21
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.1 .9 0 0 0 0'
RPF = RPF
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = '3 4 5'
thermal_conductivity_model = NFIR
initial_porosity = ${initial_fuel_porosity}
temperature = temperature
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4 5'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4 5'
temperature = temperature
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = '3 4 5'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4 5'
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
burnup_relocation_stop = ${burnup_relocation_stop}
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_inelastic_stressUpdate] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
temperature = temperature
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3 4 5'
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4 5'
burnup = burnup
temperature = temperature
initial_fuel_density = ${initial_fuel_density}
total_densification = ${total_densification}
#incremental_form = true
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4 5'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
[]
(examples/multiapp/pin2.i)
## In this example the multiapp system is called to run another BISON simulation.
## (input1.i calls input2.i) An application of this might be multiple fuel pins
## in an assembly. This example also demonstrates the internal mesh maker.
initial_fuel_density = 10200
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
a_lower = 0.06951
a_upper = 3.72711
initial_porosity = 0.04
[]
# ==================================================== #
# Mesh (and Geometry, internally-meshed)
# ==================================================== #
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.0005
pellet_outer_radius = 0.0041
clad_bot_gap_height = 0.00152
clad_top_gap_height = 0.16
pellet_quantity = 1
pellet_height = 3.6576
clad_gap_width = 8.0e-05
bottom_clad_height = 0.0167
top_clad_height = 0.0167
nx_p = 6 # number of radial elements in the fuel
ny_p = 48 # number of axial elements in the fuel
nx_c = 3 # number of elements in the clad thickness
ny_c = 48 # number of elements in the axially in the clad
ny_cu = 1
ny_cl = 1
intervals = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212'
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 10
patch_update_strategy = auto
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 493
[]
# ==================================================== #
# Dimensions and Primary Variables
# ==================================================== #
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 3.000000e+02
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
# ==================================================== #
# Auxiliary Variables
# ==================================================== #
[AuxVariables]
# ================================================== #
# Nodal Quantities
# ================================================== #
[htcl]
initial_condition = 500.0
[]
[htcv]
initial_condition = 0.0
[]
[Tl]
initial_condition = 565.0
[]
[Tv]
initial_condition = 565.0
[]
[burnup]
block = 3
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.240000e-06
[]
# ================================================== #
# Constant Monomial Quantities (Non-Mechanics)
# ================================================== #
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[axial_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[axial_burnup]
order = CONSTANT
family = MONOMIAL
[]
[axial_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.04
[]
[]
# ==================================================== #
# Time- and Space-Dependent Source and BCs
# ==================================================== #
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
x = '-100 0 5000'
y = '0 0 25000'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_temperature]
type = PiecewiseLinear
x = '-100 0'
y = '293 565'
axis = y
[]
[coolant_pressure_ramp]
# used in coolantPressure BC
type = PiecewiseLinear
scale_factor = 1
x = '0 10000.0'
y = '0 1.0'
[]
[]
# ==================================================== #
# Burnup Equation Set
# ==================================================== #
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '3.100e-02 9.690e-01'
RPF = RPF
[]
[]
# ==================================================== #
# Primary Kernels used in Heat Transfer
# ==================================================== #
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
extra_vector_tags = 'ref'
block = 3
[]
[]
[AuxKernels]
# ================================================== #
# Pre-Defined Types
# ================================================== #
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
factor = 1.27e+14 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = linear
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
# ================================================== #
# Other General Types
# ================================================== #
[axial_burnup]
type = SpatialUserObjectAux
block = 3
variable = axial_burnup
user_object = axial_burnup
execute_on = timestep_begin
[]
[axial_temperature]
type = SpatialUserObjectAux
block = 3
variable = axial_temperature
user_object = axial_temperature
execute_on = timestep_begin
[]
[]
# ==================================================== #
# Mechanical and Thermal Contact
# ==================================================== #
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
normal_smoothing_distance = 0.1
model = frictionless
formulation = Kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.200000e+00
roughness_primary = 1.8e-06
roughness_secondary = 8e-07
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 0.0001
normal_smoothing_distance = 0.1
order = FIRST
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[convective_clad_surface_bottom]
type = ConvectiveFluxBC
boundary = '1 2 3'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 565.0
final = 585.0
duration = 1.0e4 #duration of initial power ramp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.55132e+07
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
# ==================================================== #
# Specification of Material Properties
# ==================================================== #
[Materials]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
diameter = 0.008192
diametral_gap =0.000168
# Average burnup at which fuel comes into contact with clad at 25kW/m
burnup_relocation_stop = 0.0315
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10200.0
eigenstrain_name = fuel_volumetric_strain
total_densification = 0.01
[]
[fission_gas_release]
type = UO2Sifgrs
axial_power_profile = axial_peaking_factors
block = 3
burnup = burnup
fission_rate = fission_rate
hydrostatic_stress = hydrostatic_stress
grain_radius = grain_radius
pellet_brittle_zone = pbz
pellet_id = pellet_id
rod_ave_lin_pow = linear_heat_rate_profile
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 7833
[]
[]
# ==================================================== #
# User Objects for Output Processing
# ==================================================== #
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.0041
number_pellets = 1
execute_on = linear
[]
[averagefissionrate]
type = LayeredAverage
block = 3
variable = fission_rate
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[average_temp]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[averagebu]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[casl_average_fission_rate]
variable = fission_rate
type = LayeredAverage
block = 3
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[surface_temp]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[axial_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[integral_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[average]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_surface_temperature]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[rod_avg_fast_fluence]
type = LayeredSideAverage
boundary = 2
variable = fast_neutron_fluence
direction = y
num_layers = 1
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[casl_clad_surface_heat_flux]
type = LayeredSideDiffusiveFluxAverage
variable = temp
boundary = 2
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
diffusivity = thermal_conductivity
execute_on = timestep_begin
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 293
[]
[]
# ==================================================== #
# Solver Options
# ==================================================== #
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
verbose = true
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
# ================================================== #
# Time Step Control
# ================================================== #
start_time = -100
end_time = 5e6
dtmin = 0.1
dtmax = 1e6
dt = 10
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 1000
time_t = '0 1.0e4 53200 1.0e5'
time_dt = '1.0e3 1.0e3 1.0e3 1.0e5'
[]
[]
[Postprocessors]
# ================================================== #
# Required for Fission Gas Release Models
# ================================================== #
[ave_temp_interior]
# used to compute temperature of plenum
type = SideAverageValue
boundary = 9
variable = temp
outputs = exodus
execute_on = 'initial linear'
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[gas_volume]
type = InternalVolume
boundary = 9
outputs = exodus
execute_on = 'initial linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# ==================================================== #
# Location and format of output
# ==================================================== #
[Outputs]
perf_graph = true
exodus = true
file_base = pin2_output
time_step_interval = 1
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
(test/tests/uo2_thermal/FinkLucuta/test.i)
# This test case is prepared to test the thermal conductivity using the Fink-Lucuta model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the Fink-Lucuta UO2
# thermal conductivity model.
# The BISON predictions (BISON_k) compared to the expected results (expected_k)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error
# 4.867402805 4.867402805 7.33E-13
# 4.720864317 4.720864317 5.44E-13
# 4.582724225 4.582724225 3.11E-13
# 4.452567436 4.452567436 7.77E-14
# 4.329713424 4.329713424 1.67E-13
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = BurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = FINK_LUCUTA
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/IFA_535/analysis/rod_809/IFA_535_rod_809.i)
initial_fuel_density = 10398.06
[GlobalParams]
density = ${initial_fuel_density} #Assuming 10980 as the theoretical density
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
patch_size = 20 # 50
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ifa535_rod809.e
[]
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1'
initial_condition = 9.36e-6 # 2D grain radius 6um
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ifa535_809_power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ifa535_809_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 226494828 226496628 226498428 226516428 233159868 233159888'
y = ' 0.0303 1 1 0.0303 0.0303 1 1 0.0303'
[]
[flux] # reads and interpolates input data defining fast neutron flux
type = PiecewiseLinear
data_file = ifa535_809_fast_flux.csv
format = columns
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = ifa535_809_clad_bc.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system (in all cases here, the axisymmetric (RZ) version is specified)
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1' # fission rate applied to the fuel (block 2) only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.48724
a_lower = 0.01924
fuel_inner_radius = 0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1
RPF = RPF
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
axial_power_profile = axial_peaking_factors
function = flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 'clad'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_secondary = 0.81e-6
roughness_primary = 1.0e-6
roughness_coef = 3.2
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 226498428
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 3.2e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.1e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = 226498428
refab_pressure = 0.7e6
refab_temperature = 449.05
refab_volume = 9.6e-6
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
initial_fuel_density = 10398.06
eigenstrain_name = fuel_volumetric_strain
[]
[density_clad]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet_type_1'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
diameter = 0.01054 #Fuel pellet diameter in m
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.44e-4
burnup_relocation_stop = 0.029
relocation_activation1 = 5000 #initial relocation activation power in W/m
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 60
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# time control
start_time = -100
end_time = 233159888
dtmax = 5e5
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
force_step_every_function_point = true
timestep_limiting_function = power_profile
optimal_iterations = 25
iteration_window = 6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 'pellet_type_1'
[]
[clad_elong]
type = NodalVariableValue
variable = disp_y
nodeid = 2359 #Global node ID 9739
[]
[input_rod_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
sync_times = 5556726
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/triso_failure/triso_1d_ipyc_failure.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(assessment/LWR/validation/Riso_GE7_ZX115/analysis/Riso_GE7_1pt5.i)
[GlobalParams]
displacements = 'disp_x'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.005205
clad_gap_width = 110.0e-6
clad_thickness = 8.15e-4
fuel_height = 0.74952
plenum_height = 0.15665 # Add volume from below the pellet stack = 0.01494 - 0.00224 = 0.0127
# Nominal plenum height = 0.14395 + 0.0127 = 0.15665
slices_per_block = 10
[]
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temperature]
initial_condition = 293.0 # set initial temperature to ambient
scaling = 1e3
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 9.4e-6 # from Riso GE7 report, Table 2-1, R = 1.56*l/2, l is 2D average size, Mendelson, J.Am.Cerm.Soc.(1969) eqn 13
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = riso_ge7_zx115_linear_power.csv
scale_factor = 1
format = columns
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = riso_ge7_zx115_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 161748936 161756676 161813271 161814651'
y = '.013995 1 1 .994475 .994475 .013995'
[]
[clad_wall_temperature]
type = PiecewiseLinear
data_file = riso_ge7_zx115_clad_temperature.csv
format = columns
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
data_file = riso_ge7_zx115_fast_flux.csv
format = columns
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 7.24e6
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]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress strain_xx strain_xy strain_yy strain_zz'
mesh_generator = layered1D_mesh
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_xx strain_xy strain_yy strain_zz creep_strain_xx creep_strain_xy
creep_strain_yy creep_strain_zz'
mesh_generator = layered1D_mesh
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = fuel
density = 10431.0
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.76446
a_lower = 0.01494
fuel_inner_radius = 0
fuel_outer_radius = 0.005205
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
factor = 1
function = fast_neutron_flux_function
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
formulation = penalty
normalize_penalty = true
model = frictionless
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
# normal_smoothing_distance = 0.1 # This option is not applicable in 1.5D
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[temperature]
type = FunctionDirichletBC
variable = temperature
boundary = 2
function = clad_wall_temperature
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 7.24e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.29e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temperature
burnup = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
temperature = temperature
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
diameter = 0.01041 # fuel pellet diameter in meters
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 220.e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.03 # turn off relocation just before contact
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
temperature = temperature
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
temp = temperature
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
strain_free_density = 10431.0
block = fuel
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temperature
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 40
l_tol = 1e-4
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
# end_time = 161756676 # End of base irradiation
end_time = 161814651 # Whole power history, rounded to dtmin
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[Quadrature]
side_order = FIFTH
order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[average_centerline_fuel_temperature]
type = LayeredAxisymmetricCenterlineAverageValuePostprocessor
boundary = 12
variable = temperature
execute_on = 'timestep_end'
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'
[]
[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'
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[max_fuel_temperature]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_fuel_temperature]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temperature]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temperature]
type = NodalExtremeValue
block = clad
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume] # gas volume
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[average_fission_rate]
type = ElementAverageValue
block = fuel
variable = fission_rate
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.74952 # rod height
[]
[rod_ave_lin_pow]
type = LayeredElementIntegralPowerPostprocessor
block = fuel
fission_rate = fission_rate
variable = temperature
fuel_pin_geometry = pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
execute_on = 'initial timestep_end'
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
execute_on = 'initial timestep_end'
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
# Nodal comparisons
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 #coords (0.005205, 0.340524)
use_displaced_mesh = true
[]
[penetration]
type = NodalVariableValue
variable = penetration
nodeid = 262 #coords (0.005205, 0.340524)
use_displaced_mesh = true
[]
[FCT]
type = NodalVariableValue
variable = temperature
nodeid = 231 #coords (0.0, 0.340524) Glb node id 232
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
sync_times = '161756676 161760846 161765136 161765976 161767595.9 161767655.9 161767716.1 161767775.9 161767839 161767896.1 161768000.3 161770475.9 161770583.9 161771136.1 161771189.8 161772036.1 161772083.5 161772936.1 161772958.2 161773056 161773093.9 161773836.1 161773889.8 161774736.1 161774758.2 161796696.1 161796702.4 161797236.1 161797283.5 161797356 161797523.4 161797716 161797788.6 161797835.9 161797876.9 161797956.1 161798019.3 161812536.1 161812595.9 161812716.1 161812836 161813270.9'
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'average_burnup fis_gas_percent FCT rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
[]
[]
[Debug]
show_var_residual = 'disp_x temperature'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1.i)
initial_fuel_density = 10452.96
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
# end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_4_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/HbepR1/analysis/A184/HbepR1_A184.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.95e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0049695
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.24682
clad_gap_width = 1.005e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = iteration #auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = A184-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = A184-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = A184-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.68664e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = .0049695 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0233 .9767 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 3.5e-7
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00507
clad_outer_radius = 0.005865
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.00939 # fuel pellet diameter in meters
diametral_gap = 100.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .047 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
output_limiting_function = power_history
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/1.5D_restart/Smeared_1.5D.i)
# Model is of a 10 pellet stack of fuel modeled in 1.5d
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temp
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.00056
fuel_height = 0.1186
plenum_height = 0.027
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.5e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain swell reloc'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0 #0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temp
execute_on = linear
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain
block = clad
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[relocation_strain]
type = MaterialRealAux
variable = relocation
property = relocation_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = 2
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.5e6
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
#relocation_activation2 = 22965.879
#relocation_activation3 = 16404.199
relocation_model = ESCORE_modified
eigenstrain_name = reloc
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
# complete_burnup = 5
# total_densification = 0.01
initial_fuel_density = 10431.0
eigenstrain_name = swell
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLimbackHoppeUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
#absolute_tolerance = 1.0e-13
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
block = clad
#max_iterations = 50
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
#[Preconditioning]
# [SMP]
# type = SMP
# full = true
# []
#[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package' # -mat_superlu_dist_fact'
petsc_options_value = 'lu superlu_dist' # SamePattern_SameRowPerm'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7 #1e-8 #1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
# [Quadrature]
# order = THIRD
# side_order = FIFTH
# []
# [Predictor]
# type = SimplePredictor
# scale = 1.0
# []
[]
[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
# scale_factor = -1
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'
[]
[fis_gas_produced] # fission gas produced (moles)
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
# addition = 2.853e-7 # plenum
fuel_pin_geometry = pin_geometry
[]
[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
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
burnup_function = burnup
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[ave_fuel_temp]
type = ElementAverageValue
block = fuel
variable = temp
[]
[central_fuel_temp]
type = NodalVariableValue
nodeid = 262 #Mesh dependent (0.0041, 0.05661)
variable = temp
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
### Comparisons for 1.5D work, mesh specific #################### # von Mises Stress
[top_vonMises_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = vonmises
[]
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = vonmises
[]
[bottom_vonMises_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = vonmises
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises
block = fuel
[]
[top_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = vonmises
[]
[top_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = vonmises
[]
[center_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = vonmises
[]
[center_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = vonmises
[]
[bottom_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = vonmises
[]
[bottom_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = vonmises
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises
block = clad
[]
# radial stress
[top_stress_rr_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = stress_xx
[]
[center_stress_rr_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = stress_xx
[]
[bottom_stress_rr_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = stress_xx
[]
[average_stress_rr_fuel]
type = ElementAverageValue
variable = stress_xx
block = fuel
[]
[top_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = stress_xx
[]
[top_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = stress_xx
[]
[center_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = stress_xx
[]
[center_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = stress_xx
[]
[bottom_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = stress_xx
[]
[bottom_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = stress_xx
[]
[average_stress_rr_clad]
type = ElementAverageValue
variable = stress_xx
block = clad
[]
# radial strain
[top_strain_rr_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = strain_xx
[]
[center_strain_rr_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = strain_xx
[]
[bottom_strain_rr_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = strain_xx
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = strain_xx
block = fuel
[]
[top_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = strain_xx
[]
[top_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = strain_xx
[]
[center_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = strain_xx
[]
[center_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = strain_xx
[]
[bottom_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = strain_xx
[]
[bottom_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = strain_xx
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = strain_xx
block = clad
[]
# effective creep strain
[top_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = creep_strain
[]
[top_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = creep_strain
[]
[center_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = creep_strain
[]
[center_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = creep_strain
[]
[bottom_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = creep_strain
[]
[bottom_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = creep_strain
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = creep_strain
block = clad
[]
### Nodal displacements
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[top_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 63 #mesh dependent, at (0.00418, 0.09219)
[]
[top_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 68 #mesh dependent, at (0.00474, 0.09219)
[]
[center_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 36 #mesh dependent, at (0.00418, 0.05661)
[]
[center_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 43 #mesh dependent, at (0.00474, 0.05661)
[]
[bottom_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 9 #mesh dependent, at (0.00418, 0.02103)
[]
[bottom_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 16 #mesh dependent, at (0.00418, 0.02103)
[]
### Nodal temperatures
[top_temp_fuel]
type = NodalVariableValue
variable = temp
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_temp_fuel]
type = NodalVariableValue
variable = temp
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_temp_fuel]
type = NodalVariableValue
variable = temp
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[top_temp_clad_inner]
type = NodalVariableValue
variable = temp
nodeid = 63 #mesh dependent, at (0.00418, 0.09219)
[]
[top_temp_clad_outer]
type = NodalVariableValue
variable = temp
nodeid = 68 #mesh dependent, at (0.00474, 0.09219)
[]
[center_temp_clad_inner]
type = NodalVariableValue
variable = temp
nodeid = 36 #mesh dependent, at (0.00418, 0.05661)
[]
[center_temp_clad_outer]
type = NodalVariableValue
variable = temp
nodeid = 43 #mesh dependent, at (0.00474, 0.05661)
[]
[bottom_temp_clad_inner]
type = NodalVariableValue
variable = temp
nodeid = 9 #mesh dependent, at (0.00418, 0.02103)
[]
[bottom_temp_clad_outer]
type = NodalVariableValue
variable = temp
nodeid = 16 #mesh dependent, at (0.00418, 0.02103)
[]
### Nodal penetration
[top_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
### Nodal contact pressure
[top_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
### End of 1.5D comparisons
[center_eff_creep_rate_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent
variable = creep_strain_rate
[]
[center_eff_creep_rate_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent
variable = creep_strain_rate
[]
[effective_creep_strain_rate]
type = ElementAverageValue
variable = creep_strain_rate
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[densification]
type = ElementAverageValue
variable = densification
block = fuel
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
block = fuel
[]
[relocation]
type = ElementAverageValue
variable = relocation
block = fuel
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE067/UFE067.i)
################################################################################
#
# Description: Calvert Cliffs UFE067
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file UFE067_power.csv
# axial peaking factor file UFE067_axial_peaking.csv
# flux boundary condition file UFE067_fast_flux.csv
#
################################################################################
initial_fuel_density = 10396.59
[GlobalParams]
density = ${initial_fuel_density} #94.75 %TD Assume TD = 10972.65 kg/m3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.30013
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = UFE067_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = UFE067_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 141158832 141159192'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 141158832 141159192'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = UFE067_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx '
'strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy '
'creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0398 .9602 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 60
l_tol = 8e-3
nl_max_its = 80
nl_rel_tol = 1e-4
nl_abs_tol = 1e-7
start_time = -100
end_time = 141159192
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage '
'maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/triso_failure/triso_1d_pd_penetration.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[UserObjects]
[particle_geometry]
type = TRISOGeometry
outer_OPyC = OPyC_outer_boundary
outer_SiC = SiC_outer_boundary
outer_IPyC = IPyC_outer_boundary
inner_IPyC = IPyC_inner_boundary
outer_buffer = buffer_outer_boundary
outer_kernel = fuel_outer_boundary
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 2
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[pd_penetration]
type = PdPenetration
boundary = SiC_inner_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
[failure_indicator_pd_penetration]
type = PdPenetrationFailureIndicator
triso_geometry = particle_geometry
pd_penetration = pd_penetration
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
SiC_failure_pd_penetration = failure_indicator_pd_penetration
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/sifgrs/uo2/swelling_porosity.i)
# This test is for the fuel swelling and porosity computation in the Sifgrs fission gas behavior model for UO2.
# As complementary to the fission gas release process, the fission gas swelling is related to gas retention in the fuel in the form of bubbles. Through a direct description of the gas bubble development, the fission gas swelling and release are modeled as inherently coupled processes, on a physical basis. Only the fission gas swelling due to grain-face bubbles is considered.
# In a comprehensive treatment of fission gas release and fuel swelling, Sifgrs also incorporates empirical models for the swelling due to solid fission products and the fuel densification.
# Moreover, the different contributions to fuel porosity, namely, those due to fabrication pores, gas bubbles (thus associated with fission gas swelling) , and sintering (densification), are computed consistently with the swelling calculations. Then, the fuel total porosity in each mesh location can be tracked (auxkernel PorosityAuxUO2), and considered in the computation of other relevant material properties like the fuel thermal conductivity (material model UO2Thermal).
# This test aims at demonstrating the above model capabilities. The considered case involves a single-element cubic domain, constant temperature (1400 K) and fission rate (1e19 f/(m**3s)), and a irradiation time of 1e8 s. The Sifgrs model is adopted for calculating the fission gas release and fuel swelling. Starting from a typical as-fabricated value of 5%, the fuel porosity evolves consistently with the swelling. The fuel thermal conductivity is calculated as coupled with porosity, which allows taking into account the conductivity degradation due to progressive increase of gaseous porosity (see also the attached file regression_tests_sifgrs.xlsx).
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube_111.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400.'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[temp]
initial_condition = 1400.
[]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.05
[]
[density]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_sl]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_dn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
[]
[fabrication_porosity]
order = CONSTANT
family = MONOMIAL
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
[]
[sintering_porosity]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_volumetric_strain'
volumetric_locking_correction = false
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[brnp]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[por]
type = PorosityAuxUO2
variable = porosity
execute_on = 'initial linear'
[]
[rho]
type = MaterialRealAux
variable = density
property = density
execute_on = 'initial linear'
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[dvv0sl]
type = MaterialRealAux
variable = deltav_v0_sl
property = solid_swelling
[]
[dvv0dn]
type = MaterialRealAux
variable = deltav_v0_dn
property = densification
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
[]
[fabpor]
type = MaterialRealAux
variable = fabrication_porosity
property = fabrication_porosity
execute_on = 'initial linear'
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[sinpor]
type = MaterialRealAux
variable = sintering_porosity
property = sintering_porosity
[]
[thcond]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = DirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = DirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[z_disp]
type = DirichletBC
variable = disp_z
value = 0
boundary = 3
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = temp
burnup = burnup
initial_porosity = 0.05
porosity = porosity
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
temperature = temp
burnup = burnup
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[density]
type = StrainAdjustedDensity
strain_free_density = 10417.0
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.05
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1.e-04
nl_abs_tol = 1.e-05
nl_rel_tol = 1.e-05
start_time = 0.
num_steps = 100
dt = 1.e+06
end_time = 1.e+08
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_1/case_1_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
use_displaced_mesh = false
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.5e-4 2.5e-4 3.5e-4 3.85e-4'
mesh_density = '24 0 40 64'
block_names = 'fuel buffer SiC'
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1273.0
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
initial_condition = 0.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = small
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = hydrostatic
execute_on = timestep_end
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1273.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[interior_pressure_x]
type = Pressure
variable = disp_x
boundary = SiC_inner_boundary
factor = 25e6
[]
[]
[Materials]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10800.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 1
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 950 #kg/m^3
block = buffer
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
dt = 1
[]
[Postprocessors]
[max_xx]
type = ElementExtremeValue
variable = stress_xx
[]
[max_yy]
type = ElementExtremeValue
variable = stress_yy
[]
[max_zz]
type = ElementExtremeValue
variable = stress_zz
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(assessment/LWR/validation/IFA_681/analysis/rod1/IFA_681_rod1.i)
# Halden test IFA-681, rod 1
initial_fuel_density = 10478
[GlobalParams]
density = ${initial_fuel_density}. # 95.6% 10960
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 'mesh_ifa681r1_093_quad4.e'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[Functions]
[average_lhr]
type = PiecewiseLinear
data_file = 'alhr_history_ifa681r1.csv'
scale_factor = 1.e+03
format = columns
[]
[axial_scaling_lhr]
type = PiecewiseBilinear
data_file = 'peakfact_lhr_ifa681r1.csv'
axis = 1
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = 'radial_power_fact_helios_ifa681r1.csv'
axis = 0
[]
[coolant_inlet_temp]
type = PiecewiseLinear
data_file = 'coolant_inlet_temp_ifa681r1.csv'
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = 'fast_nflux_ifa681r1.csv'
scale_factor = 1.e+17
format = columns
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200. 0.'
y = ' 0. 1.'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
initial_condition = 8.5e-06
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 'clad'
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_3 pellet_type_4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel_pellets]
add_variables = false
block = 'pellet_type_3 pellet_type_4'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz'
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain fuel_thermal_eigenstrain fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = false
block = 'clad'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_xx creep_strain_zz'
eigenstrain_names = 'clad_irradiation_growth_eigenstrain clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[uo2nat]
add_variables = false
block = 'pellet_type_2 pellet_type_5'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'uo2nat_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[al2o3]
add_variables = false
block = 'pellet_type_1 pellet_type_6'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'al2o3_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_]
type = NeutronHeatSource
variable = temp
block = 'pellet_type_3 pellet_type_4'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_3 pellet_type_4'
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
rpf_input = radial_power_profile
num_radial = 40
bias = 0.95
num_axial = 20
a_lower = 118.3e-03
a_upper = 518.7e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.095e-03
fuel_volume_ratio = 1.
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.0e+7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
kennard_coefficient = 0.2173
jump_distance_model = TOPTAN
roughness_primary = 1.0e-6
roughness_secondary = 2.0e-6
gap_conductance_model = TOPTAN
quadrature = true
normal_smoothing_distance = 0.1
[]
[pellet_to_pellet1]
type = GapHeatTransfer
variable = temp
primary = 21
secondary = 22
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet2]
type = GapHeatTransfer
variable = temp
primary = 23
secondary = 24
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet3]
type = GapHeatTransfer
variable = temp
primary = 25
secondary = 26
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet4]
type = GapHeatTransfer
variable = temp
primary = 27
secondary = 28
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet5]
type = GapHeatTransfer
variable = temp
primary = 29
secondary = 30
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[CoolantChannel]
# Halden HBWR under natural circulation (v=0.4m/s)
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_inlet_temp
inlet_pressure = 3.5e+06 # Pa
inlet_massflux = 360. # kg/m^2-s
flow_area = 0.000195
heated_diameter = 0.0261
heated_perimeter = 0.0298
hydraulic_diameter = 0.0261
htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
compute_enthalpy = true
linear_heat_rate = average_lhr
axial_power_profile = axial_scaling_lhr
oxide_thickness = oxide_thickness
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.5e+06
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
## fuel ##
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_3 pellet_type_4'
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_3 pellet_type_4'
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_3 pellet_type_4'
temperature = temp
thermal_expansion_coeff = 10.0e-06
stress_free_temperature = 295.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
burnup_function = burnup
temperature = temp
gas_swelling_model_type = SIFGRS
block = 'pellet_type_3 pellet_type_4'
initial_fuel_density = 10478. # 95.6% 10960
initial_porosity = 0.044
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_3 pellet_type_4'
burnup_function = burnup
diameter = 8.19e-03
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
diametral_gap =170.e-06
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 'pellet_type_3 pellet_type_4'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.044
diff_coeff_option = TURNBULL_D1_D2
transient_option = NO_TRANSIENT
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_3 pellet_type_4'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = TOPTAN
initial_porosity = 0.044
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_3 pellet_type_4'
strain_free_density = ${initial_fuel_density}
[]
## uo2nat ##
[uo2nat_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_2 pellet_type_5'
youngs_modulus = 2.0e+11
poissons_ratio = 0.345
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_2 pellet_type_5'
[]
[uo2nat_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_2 pellet_type_5'
temperature = temp
thermal_expansion_coeff = 10.e-06
stress_free_temperature = 295.0
eigenstrain_name = 'uo2nat_thermal_eigenstrain'
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_2 pellet_type_5'
thermal_conductivity = 3.
specific_heat = 300.
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_2 pellet_type_5'
strain_free_density = ${initial_fuel_density}
[]
## al2o3 ##
[al2o3_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1 pellet_type_6'
youngs_modulus = 3.0e+11
poissons_ratio = 0.21
[]
[al2o3_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_6'
[]
[al2o3_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_6'
temperature = temp
thermal_expansion_coeff = 8.1e-06
stress_free_temperature = 295.0
eigenstrain_name = 'al2o3_thermal_eigenstrain'
[]
[al2o3_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_6'
thermal_conductivity = 18.
specific_heat = 880.
[]
[al2o3_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_6'
strain_free_density = 3800.
[]
## clad ##
[clad_elasticity]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temp
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
stress_free_temperature = 295
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_growth_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
use_coolant_channel = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
min_value = 295
max_value = 3000
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 100'
l_tol = 1.e-02
line_search = 'none'
l_max_its = 200
nl_max_its = 30
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -200.
n_startup_steps = 1
end_time = 223062317.
num_steps = 20000
dtmax = 5.e+05
dtmin = 1.
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.e+02
optimal_iterations = 25
iteration_window = 5
timestep_limiting_function = average_lhr
force_step_every_function_point = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = average_lhr
[]
[gas_volume]
type = InternalVolume
boundary = 9
[]
[fuel_volume]
type = InternalVolume
boundary = 8
outputs = exodus
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_3 pellet_type_4'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_3 pellet_type_4'
[]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
[]
[TCHoleBot_temp]
type = NodalVariableValue
variable = temp
nodeid = 63 # !! Mesh dependent
[]
[TC_temp_node1]
type = NodalVariableValue
variable = temp
nodeid = 793
[]
[TC_temp_node2]
type = NodalVariableValue
variable = temp
nodeid = 785
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_3 pellet_type_4'
value_type = max
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_3 pellet_type_4'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage max_fuel_temp'
execute_on = 'FINAL'
[]
[]
(test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
displacements = 'disp_x disp_y'
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = SmearedTwoPelletOneType2D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000 #TM default value
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1.e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[fuel_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'fuel'
fraction = 0.51
num_points = 20
orientation = 'horizontal'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[clad_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'clad'
fraction = 0.51
num_points = 9
orientation = 'horizontal'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[]
[Outputs]
exodus = true
color = false
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/TRISO/one_layer/2D/one_layer.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = one_layer.e
[]
[]
[Variables]
[temp]
initial_condition = 1273.0
[]
[]
[AuxVariables]
[burnup]
initial_condition = 0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = true
strain = FINITE
eigenstrain_names = ''
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
[]
[buffer]
block = buffer
add_variables = true
strain = FINITE
eigenstrain_names = ''
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
[]
[SiC]
block = SiC
add_variables = true
strain = FINITE
eigenstrain_names = ''
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1273.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[exterior_pressure_y]
type = Pressure
variable = disp_y
boundary = exterior
factor = 0.1e6
[]
[interior_pressure_x]
type = Pressure
variable = disp_x
boundary = PyCGapBndry
factor = 25e6
[]
[interior_pressure_y]
type = Pressure
variable = disp_y
boundary = PyCGapBndry
factor = 25e6
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10800.0 #kg/m^3
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 1
poissons_ratio = 0.345
[]
[buffer_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = buffer
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 950.0 #kg/m^3
block = buffer
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = SiC
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
nl_rel_tol = 5e-8
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
dtmax = 5e6
dtmin = 1
[]
[Postprocessors]
[max_xx]
type = ElementExtremeValue
variable = stress_xx
[]
[max_yy]
type = ElementExtremeValue
variable = stress_yy
[]
[max_zz]
type = ElementExtremeValue
variable = stress_zz
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[chkfile]
type = CSV
show = 'max_xx max_yy max_zz'
[]
[]
(workshop/bison_example/Smeared.i)
# This model is a higher order, discrete 10 pellet fuel stack (pellet_type_1).
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = smeared.e
type = FileMeshGenerator
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain
fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx
stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain
clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx
stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775
RPF = RPF
# N235 = N235
# N236 = N236
# N238 = N238
# N239 = N239
# N240 = N240
# N241 = N241
# N242 = N242
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
diameter = 0.0082
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 616
[]
[fuel_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 587
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 1440
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 587
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/ThermalFuel_error_messages/thermal_conductivity_error.i)
#Error testing when thermal conductivity = 0. This is done by setting thermal_conductivity_scale_factor = 0.
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 0.001
ymax = 0.001
[]
[]
[Variables]
[temp]
initial_condition = 200
[]
[]
[AuxVariables]
[burnup]
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[heat_source]
type = HeatSource
variable = temp
value = 1e10
[]
[]
[AuxKernels]
[burnup]
type = ConstantAux
variable = burnup
value = 0.01
[]
[]
[Materials]
[heat_conductor]
type = UO2Thermal
block = 0
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
thermal_conductivity_scale_factor = 0
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left right'
value = 200
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = false
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_tenslice.i)
# Model is of a 10 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 10
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain fuel_volumetric_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
fuel_pin_geometry = pin_geometry
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
penalty = 1e7
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4 #8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_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
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 231 # Global node id 232, at coordinates (0.0, 1.71774, 0.0)
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 427 #coords (0.0041275, 3.62274)
[]
[top_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 81 #coords (0.0042164, 3.62274)
[]
[plenum_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 90 #coords (0.0042164, 3.96053)
[]
[top_radial_strain_fuel]
type = ElementalVariableValue
variable = strain_xx
elementid = 203
[]
[top_axial_strain_fuel]
type = ElementalVariableValue
elementid = 203
variable = strain_yy
[]
[top_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 36
[]
[top_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 36
[]
[plenum_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 40
[]
[plenum_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 40
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[pellet_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_surface_temp'
#[]
#[pellet_center_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 12
# sort_by = y
# outputs = 'outfile_FCT'
#[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[outfile_fuel_surface_temp]
# type = CSV
# execute_on = linear
#[]
#[outfile_FCT]
# type = CSV
# execute_on = linear
#[]
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/HbepR1/analysis/A364/HbepR1_A364.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 8.0e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0052195
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.2461
clad_gap_width = 1.055e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = A364-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = A364-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = A364-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.68056e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0052195 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0308 .9692 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 0.35e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.005325
clad_outer_radius = 0.006125
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.010439 # fuel pellet diameter in meters
diametral_gap = 105.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .049 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
output_limiting_function = power_history
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_4b/case_4b_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
[GlobalParams]
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
use_displaced_mesh = false
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.5e-4 2.5e-4 3.5e-4 3.5e-4 3.9e-4 4.25e-4'
mesh_density = '12 0 20 0 16 16'
block_names = 'fuel buffer IPyC SiC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1273.0
[]
[]
[Functions]
[eigenstrain]
type = ParsedFunction
expression = '-0.005*t'
[]
[fluence]
type = ParsedFunction
expression = '3.75e17*t'
[]
[k_function]
type = ParsedFunction
expression = '2.715e-29'
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
initial_condition = 0.0
[]
[fluence]
initial_condition = 0.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC]
block = IPyC
strain = small
incremental = true
[]
[rest]
block = 'fuel buffer SiC'
strain = small
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = hydrostatic
execute_on = timestep_end
[]
[fluence]
type = FunctionAux
variable = fluence
function = fluence
execute_on = timestep_begin
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1273.0
[]
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[interior_pressure_x]
type = Pressure
variable = disp_x
boundary = IPyC_inner_boundary
factor = 25e6
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 3.75e17 # n/m^2-sec
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
[]
[IPyC_stress]
type = PyCCreep
block = IPyC
k = k_function
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10800.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 1
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 950
block = buffer
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IPyC_temperature]
type = HeatConductionMaterial
block = IPyC
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0
block = IPyC
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 8e7
dt = 1.0
dtmax = 5e6
dtmin = 1.0e4
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[max_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[max_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/TSQ002.i)
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = tsq002_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[grain_radius]
block = pellet_type_1
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
a_lower = 0.00324
a_upper = 3.81705
fuel_outer_radius = 0.0041275
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10
initial_moles = initial_moles
primary = 5
gas_released = fission_gas_released
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.517e6
function = pressure_ramp
displacements = 'disp_x disp_y'
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.008255
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =0.0001778 #diameteral gap
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81381 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
nodeid = 30330 #coords (0.0, 2.10133)
variable = temp
execute_on = 'initial timestep_end'
[]
[FCT_slice4]
type = NodalVariableValue
nodeid = 37085 #coords (0.0, 1.71896)
variable = temp
execute_on = 'initial timestep_end'
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = pellet_type_1
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[gap_slice6]
type = NodalVariableValue
variable = penetration
nodeid = 23579 #coords (0.0041275, 2.48172)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 30299 #coords (0.0041275, 2.10133)
[]
[gap_slice4]
type = NodalVariableValue
variable = penetration
nodeid = 37054 #coords (0.0041275, 1.71896)
[]
[contact_pressure_slice6]
type = NodalVariableValue
variable = contact_pressure
nodeid = 23579 #coords (0.0041275, 2.48172)
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 30299 #coords (0.0041275, 2.10133)
[]
[contact_pressure_slice4]
type = NodalVariableValue
variable = contact_pressure
nodeid = 37054 #coords (0.0041275, 1.71896)
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet_type_1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(test/tests/layered_1D/radial_power_factor.i)
[GlobalParams]
density = 10431.0
displacements = disp_x
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false
[layered1D_mesh]
type = Layered1DMeshGenerator
include_clad = false
include_plenum = false
slices_per_block = 1
pellet_bottom_coor = 0
pellet_mesh_density = customize
fuel_height = 1
pellet_outer_radius = 0.0041
nx_p = 10
bx_p = 0.5
elem_type = EDGE2
[]
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 7e7'
y = '1373.15 1473.15'
[]
[power]
type = ParsedFunction
expression = '20000'
[]
[axial_power_factor]
type = ParsedFunction
expression = '1'
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1373.15
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
# Would normally supply 'burnup = burnup' to NeutronHeatSource.
# Give rod_ave_lin_pow instead to exercise a corner of code.
[nhs]
type = NeutronHeatSource
rod_ave_lin_pow = power
fuel_pin_geometry = pin_geometry
variable = temp
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[gps]
strain = small
incremental = true
planar_formulation = plane_strain
[]
[]
[Burnup]
[burnup]
block = fuel
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
axial_power_profile = axial_power_factor
num_radial = 11
bias = 0.5
num_axial = 2
a_lower = 0
a_upper = 1.0
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[BCs]
[ux]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[temp]
type = FunctionDirichletBC
variable = temp
boundary = 12
function = temp
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[stress]
type = ComputeStrainIncrementBasedStress
block = fuel
[]
[thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup_function = burnup
initial_porosity = 0
thermal_conductivity_model = FINK_LUCUTA
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
l_tol = 1e-5
start_time = 0.0
dt = 100000
num_steps = 700
[]
[Outputs]
time_step_interval = 20
exodus = true
show = 'fission_rate burnup N235 N236 N238 N239 N240 N241 N242 RPF rod_input_power rod_total_power'
[console]
type = Console
max_rows = 25
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[]
[Postprocessors]
[rod_input_power]
type = FunctionValuePostprocessor
function = power
execute_on = 'initial timestep_end'
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[]
(examples/TRISO/full_particle/2D/full_particle.i)
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density}
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = full_particle.e
[]
[]
[Variables]
[temperature]
initial_condition = 1346.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
[]
[burnup]
block = fuel
[]
[grain_radius]
initial_condition = 5.0e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[buffer]
block = buffer
add_variables = true
strain = FINITE
eigenstrain_names = 'buffer_thermal_strain buffer_eigenstrain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[IPyC]
block = IPyC
add_variables = true
strain = FINITE
eigenstrain_names = 'IPyC_eigenstrain IPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[SiC]
block = SiC
add_variables = true
strain = FINITE
eigenstrain_names = 'SiC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[OPyC]
block = OPyC
add_variables = true
strain = FINITE
eigenstrain_names = 'OPyC_eigenstrain OPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[]
[Functions]
[fast_neutron_flux]
type = ParsedFunction
expression = 1.708707e18
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
penalty = 1e5
model = frictionless
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 15
secondary = 17
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346
[]
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[exterior_pressure_y]
type = Pressure
variable = disp_y
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
[plenumPressure]
boundary = 'PyCGapBndry BufferGapBndry'
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18 # n/m^2-sec
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temperature
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e8
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius = grain_radius
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2.0e8
poissons_ratio = 0.345
[]
[buffer_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = buffer
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_density]
type = StrainAdjustedDensity
strain_free_density = 1000.0
block = buffer
[]
[buffer_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = buffer_thermal_strain
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[buffer_irraditation]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = buffer_eigenstrain
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IOPyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temperature
[]
[IOPyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IOPyC_density]
type = StrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1880.0
[]
[IPyC_densification]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = IPyC_eigenstrain
[]
[IPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = IPyC_thermal_strain
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = SiC
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[SiC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = SiC_thermal_strain
[]
[OPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[OPyC_densification]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = OPyC_eigenstrain
[]
[OPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = OPyC_thermal_strain
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 20
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.10176e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[min_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
value_type = min
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[min_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
value_type = min
[]
[max_xx_OPyC]
type = ElementExtremeValue
variable = stress_xx
block = OPyC
[]
[max_yy_OPyC]
type = ElementExtremeValue
variable = stress_yy
block = OPyC
[]
[min_zz_OPyC]
type = ElementExtremeValue
variable = stress_zz
block = OPyC
value_type = min
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial TIMESTEP_END'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial TIMESTEP_END'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
addition = -5.53e-11
execute_on = 'initial TIMESTEP_END'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial TIMESTEP_END'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temperature
execute_on = 'INITIAL TIMESTEP_END'
[]
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'INITIAL TIMESTEP_END'
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
execute_on = 'INITIAL TIMESTEP_END'
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
execute_on = 'INITIAL TIMESTEP_END'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
execute_on = Final
show = 'max_xx_IPyC max_yy_IPyC min_zz_IPyC max_xx_SiC max_yy_SiC min_zz_SiC co_production fis_gas_released avg_surface_temperature'
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_4a/case_4a_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
use_displaced_mesh = false
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.5e-4 2.5e-4 3.5e-4 3.5e-4 3.9e-4 4.25e-4'
mesh_density = '12 0 20 0 16 16'
block_names = 'fuel buffer IPyC SiC'
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1273.0
[]
[]
[Functions]
[eigenstrain]
type = ParsedFunction
expression = '-0.005*t'
[]
[fluence]
type = ParsedFunction
expression = '3.75e17*t'
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
initial_condition = 0.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC]
block = IPyC
strain = small
eigenstrain_names = ipyc_eigenstrain
[]
[rest]
block = 'fuel buffer SiC'
strain = small
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = hydrostatic
execute_on = timestep_end
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1273.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[interior_pressure_x]
type = Pressure
variable = disp_x
boundary = IPyC_inner_boundary
factor = 25e6
[]
[]
[Materials]
[fluence]
type = GenericFunctionMaterial
prop_names = fast_neutron_fluence
prop_values = fluence
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer IPyC SiC'
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
[]
[IPyC_eigenstrain]
type = PyCIrradiationEigenstrain
radial_eigenstrain_function = eigenstrain
tangential_eigenstrain_function = eigenstrain
eigenstrain_name = ipyc_eigenstrain
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10800.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 1
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 950 #kg/m^3
block = buffer
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IPyC_temp]
type = HeatConductionMaterial
block = IPyC
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[IPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0 # kg/m^3
block = IPyC
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 8e7
dt = 1.0
dtmax = 5e6
dtmin = 1.0e4
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[max_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
value_type = min
[]
[max_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
value_type = min
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(test/tests/thermalUO2/thermalUO2_test.i)
[Mesh]
[mesh]
type = FileMeshGenerator
file = pelletfine1_rz.e
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 300.0 # set initial T to ambient
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
block = 2
[]
[burnup]
order = FIRST
family = LAGRANGE
block = 2
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
block = 2
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
block = 2
value = 1.183e19 # corrected average power to 200 W/cm
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
block = 2
execute_on = linear
[]
[burnup]
type = ConstantAux
variable = burnup
value = 0.001
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[ConstantT]
type = DirichletBC
boundary = 10
variable = T
value = 500
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
temperature = T
# burnup_material = burnup or burnup = burnup specified in cli_args
initial_porosity = 0.015
[]
[density]
type = ParsedMaterial
block = 2
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '100 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
l_max_its = 60
nl_max_its = 15
nl_rel_tol = 1e-9
nl_abs_tol = 1e-10
l_tol = 1e-5
[]
[Outputs]
file_base = out
[exodus]
type = Exodus
[]
[]
(test/tests/uo2_thermal/NFIR/ad_test.i)
# This test case is prepared to test the thermal conductivity using the NFIR model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the NFIR thermal conductivity model.
# The BISON predictions (BISON_k for UO2, BISON_Gd_k for UO2 with a 2% gadolinia content)
# compared to the expected results (expected_k for UO2, expected_Gd_k for UO2 with a 2% gadolinia content)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error expected_Gd_k BISON_Gd_k percent_error_Gd
# 6.571905059 6.571905059 -6.88E-13 9.136048213 9.136048213 -8.88E-14
# 6.136875752 6.136875752 -4.88E-13 8.314492721 8.314492721 3.66E-13
# 5.759359735 5.759359735 -6.88E-13 7.634515412 7.634515412 -3.77E-13
# 5.428740977 5.428740977 -1.55E-13 7.062551903 7.062551903 3.55E-13
# 5.136871127 5.136871127 -7.33E-13 6.574880462 6.574880462 4.11E-13
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = ADBurnupAux
variable = burnup
density = 10431.0 # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = ADFunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = NFIR
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ADParsedMaterial
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_uo2.i)
#
# Simple regression test for relocation recovery.
#
[GlobalParams]
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
displacements = 'disp_x disp_y'
patch_size = 20
[mesh]
type = FileMeshGenerator
file = pellet_clad.e
[]
[]
# Define dependent variables
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 573.15
[]
[]
# Define auxillary variables
[AuxVariables]
[fast_neutron_flux]
order = FIRST
family = LAGRANGE
block = 1
[]
[fast_neutron_fluence]
order = FIRST
family = LAGRANGE
block = 1
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[relocation_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[pressure_ramp]
type = PiecewiseLinear
x = '0 2880 4320 7920 10080 20000'
y = '1.5 16.0 16.0 5.0 20.0 20.0'
[]
[plenum_pressure]
type = PiecewiseLinear
x = '0 500 2880 4320 7920 10080 20000'
y = '1 1 2 2 12 2 2'
[]
[power_profile]
type = PiecewiseLinear
x = '0 3600 7200'
y = '0 50000 50000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = '1'
[]
[burnup]
type = PiecewiseLinear
x = '0 50000'
y = '0 0.2'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = finite
[fuel]
block = 2
eigenstrain_names = 'relocation_eigenstrain volumetric_swelling fuelthermal_strain'
[]
[clad]
block = 1
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
factor = 3e17
block = 1
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[burnup]
type = FunctionAux
variable = burnup
function = burnup
execute_on = nonlinear
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = 2
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[gas_swell]
type = MaterialRealAux
block = 2
variable = gas_swell
property = gas_swelling
execute_on = nonlinear
[]
[volumetric_strain]
type = RankTwoScalarAux
block = 2
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = nonlinear
[]
[reloc_strain]
type = MaterialRealAux
block = 2
variable = relocation_strain
property = relocation_strain
execute_on = nonlinear
[]
[elastic_strain_rr]
type = RankTwoAux
variable = elastic_strain_rr
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[total_strain_rr]
type = RankTwoAux
variable = total_strain_rr
rank_two_tensor = total_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[stress_rr]
type = RankTwoAux
variable = stress_rr
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[elastic_strain_yy]
type = RankTwoAux
variable = elastic_strain_yy
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[total_strain_yy]
type = RankTwoAux
variable = total_strain_yy
rank_two_tensor = total_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[elastic_strain_zz]
type = RankTwoAux
variable = elastic_strain_zz
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[total_strain_zz]
type = RankTwoAux
variable = total_strain_zz
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = 2
execute_on = nonlinear
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = 1
execute_on = nonlinear
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = 1
execute_on = nonlinear
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = 1
execute_on = nonlinear
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 1
secondary = 7
formulation = kinematic
model = frictionless
penalty = 1e10
[]
[]
# Define boundary conditions
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '2 4 6 8'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 3
factor = 1.0e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[plenum1]
boundary = 1
factor = 1.0e6
function = plenum_pressure
[]
[plenum2]
boundary = 7
factor = 0
function = plenum_pressure
[]
[]
[temp_bc]
type = DirichletBC
variable = temp
boundary = '1 2 3 4'
value = 750.0
preset = false
[]
[]
# Define material behavior models and input material property data
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 2
youngs_modulus = 1e11
poissons_ratio = 0.0
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 2
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = 2
temperature = temp
burnup = burnup
total_densification = 0.01
eigenstrain_name = volumetric_swelling
initial_fuel_density = 10430.0
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 2
thermal_expansion_coeff = 1.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuelthermal_strain
[]
[thermal]
type = UO2Thermal
block = 2
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
initial_porosity = 0.05
[]
[density]
type = StrainAdjustedDensity
block = 2
strain_free_density = 10430.0
[]
[relocation]
type = UO2RelocationEigenstrain
block = 2
burnup = burnup
diameter = 0.00984
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =0.00016
burnup_relocation_stop = 1.0e12
model_relocation_recovery = true
max_relocation_recovery_fraction = 1.0
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'recovered_relocation_strain'
eigenstrain_name = relocation_eigenstrain
relocation_model = ESCORE_modified
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 100.0
specific_heat = 1.0
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'zry_creep'
[]
[zry_creep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
model_primary_creep = true
[]
[]
[UserObjects]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 7
force_postaux = true
[]
[]
[Executioner]
type = Transient
# PETSC options
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-7
nl_abs_tol = 1e-9
# time control
# Time steps set up to match halden data
start_time = 0
end_time = 20000
num_steps = 1000
# control for adaptive time steping
dt = 720
dtmax = 900
dtmin = 10
[Quadrature]
order = fifth
side_order = seventh
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[_dt] # time step
type = TimestepSize
[]
[rod_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.001
execute_on = timestep_end
[]
[reloc_strain]
type = ElementalVariableValue
variable = relocation_strain
elementid = 1
execute_on = timestep_end
[]
[contact_pressure]
type = ElementalVariableValue
variable = contact_pressure
elementid = 1
execute_on = nonlinear
[]
[average_contact_pressure]
type = ElementalVariableValue
variable = layered_average_contact_pressure
elementid = 1
execute_on = timestep_end
[]
[disp_x]
type = NodalVariableValue
nodeid = 2
variable = disp_x
execute_on = nonlinear
[]
[disp_y]
type = NodalVariableValue
nodeid = 2
variable = disp_y
execute_on = timestep_end
[]
[clad_crp_zz]
type = SideAverageValue
boundary = 1
variable = creep_strain_zz
execute_on = timestep_end
[]
[clad_crp_xx]
type = SideAverageValue
boundary = 1
variable = creep_strain_xx
execute_on = timestep_end
[]
[clad_creep_increment]
type = SideAverageIncrementTensorComponent
boundary = 1
variable = creep_strain_zz
execute_on = timestep_end
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 2
execute_on = timestep_end
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = 2
execute_on = timestep_end
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = 2
execute_on = timestep_end
[]
[elastic_strain_rr]
type = ElementAverageValue
variable = elastic_strain_rr
block = 2
execute_on = nonlinear
[]
[total_strain_rr]
type = ElementAverageValue
variable = total_strain_rr
block = 2
execute_on = nonlinear
[]
[stress_rr]
type = ElementAverageValue
variable = stress_rr
block = 2
execute_on = timestep_end
[]
[elastic_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
block = 2
execute_on = nonlinear
[]
[total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
block = 2
execute_on = nonlinear
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
block = 2
execute_on = timestep_end
[]
[elastic_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
block = 2
execute_on = nonlinear
[]
[total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
block = 2
execute_on = timestep_end
[]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 2
execute_on = timestep_end
[]
[thermal_strain_rr]
type = DifferencePostprocessor
value1 = total_strain_rr
value2 = elastic_strain_rr
execute_on = timestep_end
[]
[thermal_strain_yy]
type = DifferencePostprocessor
value1 = total_strain_yy
value2 = elastic_strain_yy
execute_on = timestep_end
[]
[thermal_strain_zz]
type = DifferencePostprocessor
value1 = total_strain_zz
value2 = elastic_strain_zz
execute_on = timestep_end
[]
[dispx_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 6
execute_on = nonlinear
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 7
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[recov_strain]
type = ElementalVariableValue
variable = recovered_relocation_strain
elementid = 1
execute_on = timestep_end
[]
[]
# Define output file(s)
[Outputs]
exodus = true
csv = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/densification_only.i)
#
# Test of densification (1000K)
#
# With a burnup of 0.0009499, the volumetric strain should be -0.005.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'swelling'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
density_name = 'reg_density'
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0009499001513152362'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[gas_swell]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[densification]
type = ADMaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_strain]
type = ADRankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
initial_fuel_density = 10430.0
include_gas_swelling = false
include_solid_swelling = false
include_densification = true
eigenstrain_name = swelling
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
[]
[density]
type = ADStrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10430.0
[]
[converter]
type = MaterialADConverter
ad_props_in = 'density'
reg_props_out = 'reg_density'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temp'
file_base = densification_only_out
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/densification_only.i)
#
# Test of densification (1000K)
#
# With a burnup of 0.0009499, the volumetric strain should be -0.005.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = swelling
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.0009499001513152362'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
initial_fuel_density = 10430.0
include_gas_swelling = false
include_solid_swelling = false
include_densification = true
eigenstrain_name = swelling
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temp'
file_base = densification_only_out
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/REP_Na_4.i)
# REP Na 4 Rodlet Base Irradiation
initial_fuel_density = 10476.35
[GlobalParams]
density = ${initial_fuel_density} # assumed TD = 10970
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
maximum_lagrangian_update_iterations = 200
acceptable_iterations = 30
acceptable_multiplier = 5
[]
[Mesh]
coord_type = RZ
patch_size = 40
#patch_update_strategy = auto
#partitioner = centroid
#centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = REP_Na4.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.15
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
initial_condition = 5.0e-6 # Assume Grain size 10 microns
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[fuel_cond]
order = CONSTANT
family = MONOMIAL
[]
[swelling_strain]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_flux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[SED]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = REPNa4_power_history_Full.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = REPNa4_axial_peaking_Full.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 101325
8640 15499970
124675200 15499970
124718400 101325
125193600 101325
125193610 101325
125193650 500008
125193700 500008
125193900 500008
125194000 101325
125194100 101325'
[]
[temp_ramp] # inlet coolant temp evolution
type = PiecewiseLinear
scale_factor = 0.985
xy_data = '0 293.15
8640 591
20476800 591
21859200 600
47692800 600
51840000 593
72144000 593
73440000 586
96940800 586
99360000 583
124675200 583
124761600 293.15
125193600 293.15
125193650 553.15
125193900.0 553.150
125194000.0 293.150
125194100.0 293.150'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz axial_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 'clad'
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress axial_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.5678974
a_lower = 0.0045
fuel_inner_radius = 0
fuel_outer_radius = 0.0040959
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0449 0.9551 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_profile
factor = 3e13 #n/m2-s
block = 'clad'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
block = 'clad'
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[fuel_conductance]
type = MaterialRealAux
property = thermal_conductivity
variable = fuel_cond
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[swelling_strain]
type = MaterialRealAux
property = volumetric_swelling_strain
variable = swelling_strain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = axial_creep_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = hoop_plastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = axial_plastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[total_axial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_axial_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = axial_elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_coolant_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_coolant_flux
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
property = critical_heat_flux
variable = critical_heat_flux
boundary = 2
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[ofract_total]
type = MaterialRealAux
property = current_oxygen_weight_frac_total
variable = oxywtfract_total
execute_on = timestep_end
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
property = oxygen_weight_frac_gained_total
variable = oxywtfgain_total
execute_on = timestep_end
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
property = fract_beta_phase
variable = fract_beta_phase
block = 'clad'
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 210 #10
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 10.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[pellet_clad_mechanical_2]
primary = 5
secondary = 410
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2.0e-6
roughness_secondary = 0.5e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
emissivity_primary = 0.800 #Emissivity for fuel
emissivity_secondary = 0.325 #Emissivity for clad
refab_time = 125107200
refab_gas_types = He
refab_fractions = 1
contact_coef = 20 #10 default
[]
[]
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.60e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior #plenumTemp
volume = gas_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
# extra_vector_tags = 'ref'
refab_time = 125107200
refab_pressure = 0.301e6
refab_temperature = 293.15
refab_volume = 2.0e-6
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = 3244.044104 # kg/m^2-sec
rod_diameter = 0.00951 # m
rod_pitch = 1.26e-2 # m
coolant_material = 'water'
compute_enthalpy = true
oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = 50
[]
#
# [convective_clad_surface_sodium] # apply convective boundary to clad outer surface
# boundary = '1 2 3'
# variable = temp
# inlet_temperature = temp_ramp # K
# inlet_pressure = pressure_ramp # Pa
# inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
# flow_area = 8.74855e-5 #m^2
# heated_diameter = 1.172526e-2 #m
# hydraulic_diameter = 4.7e-3 #m
# heated_perimeter = 2.984513e-2 #m
# coolant_material = 'sodium'
# compute_enthalpy = true
# heat_transfer_mode = 0
# oxide_thickness = oxide_thickness # coupled oxide_thickness
# number_axial_zone = 50
# rod_diameter = 0.0095 # m
# htc_correlation_type = 2
# []
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
strain_free_density = ${initial_fuel_density}
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
matpro_poissons_ratio = 1
matpro_youngs_modulus = 1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0208
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = 'pin_geometry'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10476.35
total_densification = 0.00675
initial_porosity = 0.045
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
fission_rate = fission_rate
initial_porosity = 0.045
grain_radius = grain_radius
gbs_model = true
transient_option = NO_TRANSIENT
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6550
[]
[clad_thermal]
type = ZryThermal
block = 'clad'
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
temperature = temp
matpro_poissons_ratio = true
matpro_youngs_modulus = true
cold_work_factor = 0.5
fast_neutron_fluence = fast_neutron_fluence
block = 'clad'
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_zryplasticity'
block = 'clad'
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
creeprate_scale_factor = 1
model_irradiation_creep = 1
model_primary_creep = 1
model_thermal_creep = 1
max_inelastic_increment = 0.0002
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
max_inelastic_increment = 0.0002
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00417789
clad_outer_radius = 0.00475615
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
oxygen_weight_fraction_initial = 0.0012
[]
[phase]
type = ZrPhase
block = 'clad'
numerical_method = 2
temperature = temp
[]
[StrainEnergyDensity]
type = StrainEnergyDensity
block = 'clad'
incremental = 1
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200 # The maximum permissible iterative value for the variable.
min_value = 200 # The minimum permissible iterative value for the variable.
variable = temp # The name of the variable that this damper operates on
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'contact'
contact_line_search_allowed_lambda_cuts = 0
contact_line_search_ltol = 0.5
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 125193600 #125194100 is the end time for the RIA
dtmax = 1e6
dtmin = 1e-7
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e3
optimal_iterations = 100
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = power_profile
max_function_change = 1e6
force_step_every_function_point = true
timestep_limiting_postprocessor = material_timestep
time_t = '125193610 125193620 125193630 125193640 125193650 125193660 125193670 125193680'
time_dt = '10 10 10 10 10 10 10 10'
growth_factor = 5
[]
[Quadrature]
order = FIFTH #SEVENTH
side_order = SEVENTH #Comment out if order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9 #For RIA the node number is ##***8479***##
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[1_rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[3_burnup_GWd]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = 'clad'
variable = vonmises_stress
[]
[z_average_RPF]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = RPF
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = 'clad'
[]
## Nodal values
[FCT] #fuel centerline temperature
type = NodalVariableValue
variable = temp
nodeid = 3866 #(0, 0.303375, 0)
[]
[FST] #fuel surface temperature
type = NodalVariableValue
variable = temp
nodeid = 3823 #(0.0040959, 0.303375, 0)
[]
[CIST] #clad inner surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9557 #(0.0041779, 0.305106, 0)
[]
[COST] #clad outer surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9547 #(0.00475615, 0.305106, 0)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 3823 #(0.0040959, 0.303375, 0)
use_displaced_mesh = true
[]
#######################################
[qpoint_penetration] #FOCE
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 1200
use_displaced_mesh = 1
[]
[penetration] #FOCN
type = NodalVariableValue
variable = penetration
nodeid = 3823
use_displaced_mesh = 1
[]
[contact_pressure] #FOCN
type = NodalVariableValue
variable = contact_pressure
nodeid = 3823
use_displaced_mesh = 1
[]
[gap_cond] #FOCE
type = ElementalVariableValue
variable = gap_cond
elementid = 1200
use_displaced_mesh = 1
[]
[creep_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_creep_strain
elementid = 2981
use_displaced_mesh = 1
[]
[elastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_elastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[plastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_plastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[total_hoop_strain] #COCE
type = ElementalVariableValue
variable = total_hoop_strain
elementid = 2981
use_displaced_mesh = 1
[]
[clad_hoop_stress] #COCE
type = ElementalVariableValue
variable = hoop_stress
elementid = 2981
use_displaced_mesh = 1
[]
[clad_axial_elongation] #COTN
type = NodalVariableValue
variable = disp_y
nodeid = 10755
use_displaced_mesh = 1
[]
[clad_oxide_thickness] #COCE
type = ElementalVariableValue
variable = oxide_thickness
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_htc] #COCE
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_temp] #COCE
type = ElementalVariableValue
variable = coolant_temp
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_flux] #COCE
type = ElementalVariableValue
variable = clad_coolant_flux
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_hmode] #COCE
type = ElementalVariableValue
variable = coolant_channel_hmode
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_htype] #COCE
type = ElementalVariableValue
variable = coolant_channel_htype
elementid = 2981
use_displaced_mesh = 1
[]
[critical_heat_flux] #COCE
type = ElementalVariableValue
variable = critical_heat_flux
elementid = 2981
use_displaced_mesh = 1
[]
[fuel_centerline_temp] #FICN
type = NodalVariableValue
variable = temp
nodeid = 3866
[]
[fuel_surface_temp] #FOCN
type = NodalVariableValue
variable = temp
nodeid = 3823
[]
[clad_inner_surface_temp] #CICN
type = NodalVariableValue
variable = temp
nodeid = 9557
[]
[clad_outer_surface_temp] #COCN
type = NodalVariableValue
variable = temp
nodeid = 9547
[]
[fuel_axial_elongation] #FOTN
type = NodalVariableValue
variable = disp_y
nodeid = 7739
[]
[clad_radial_elongation] #COCN
type = NodalVariableValue
variable = disp_x
nodeid = 9547
[]
[fuel_radial_elongation] #FOCN
type = NodalVariableValue
variable = disp_x
nodeid = 3823
[]
[SED_PPN_O] #COCE
type = ElementalVariableValue
variable = SED
elementid = 2981
use_displaced_mesh = 1
[]
[SED_PPN_I] #CICE
type = ElementalVariableValue
variable = SED
elementid = 2984
use_displaced_mesh = 1
[]
[zz_OFract_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfract_total
elementid = 2981
use_displaced_mesh = 1
[]
[zz_OGain_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = 2981
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = 'clad'
variable = SED
value_type = max
[]
#Post processor to calculate radial average enthalpy. This postprocessor isnt available yet in BISON
[z_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.3
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = z_RAE
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_diameter'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_pellet_diameter'
[]
#Location of peak power node at appoximately 0.3 m in mesh
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = 'outfile_radial_temp'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
#exodus = true
color = false
[outfile_clad_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_pellet_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_radial_temp]
type = CSV
end_time = -100000
[]
[console]
type = Console
output_linear = true
max_rows = 10
[]
[chkfile]
type = CSV
show = 'ave_temp_interior fission_gas_released FCT average_burnup peak_RAE'
execute_on = 'FINAL'
[]
[exodus]
type = Exodus
time_step_interval = 4
end_time = 125193700
[]
[exodus_RIA]
type = Exodus
time_step_interval = 3
start_time = 125193695
[]
[checkpoint_RIA]
type = Checkpoint
file_base = recover_files_RIA
sync_times = '124761600 125107200 125193600 125193650 125193700 125193700.06 125193700.07 125193700.08 125193700.09 125193700.10 125193700.20 125193700.30 125193700.40 125193700.50 125193700.60 125193700.70 125193700.80 125193700.90 125193701.00 125193701.25 125193701.50 125193701.75 125193702.00 125193702.25 125193702.50 125193702.75 125193703.00 125193704.00 125193705.00'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
show_material_props = true
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_2/case_2_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
use_displaced_mesh = false
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.5e-4 2.5e-4 3.5e-4 4.4e-4'
mesh_density = '24 0 40 64'
block_names = 'fuel buffer IPyC'
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1273.0
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
initial_condition = 0.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = small
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = hydrostatic
execute_on = timestep_end
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1273.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[interior_pressure_x]
type = Pressure
variable = disp_x
boundary = IPyC_inner_boundary
factor = 25e6
[]
[]
[Materials]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer IPyC'
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10800.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 1
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 950 #kg/m^3
block = buffer
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IPyC_temp]
type = HeatConductionMaterial
block = IPyC
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[IPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0 # kg/m^3
block = IPyC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1.0
dt = 1.0
[]
[Postprocessors]
[max_xx]
type = ElementExtremeValue
variable = stress_xx
[]
[max_yy]
type = ElementExtremeValue
variable = stress_yy
[]
[max_zz]
type = ElementExtremeValue
variable = stress_zz
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_10/IFA_650_10_part1.i)
# Halden test IFA-650.10
initial_fuel_density = 10447
[GlobalParams]
density = ${initial_fuel_density}. # 95.32% of 10960
displacements = 'disp_x disp_y'
temperature = temp
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = true
[]
[Mesh]
coord_type = RZ
patch_size = 5 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh_ifa65010.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[Functions]
[linear_heat_rate]
type = PiecewiseLinear
data_file = lhr_average.csv
scale_factor = 1.e+03
format = columns
[]
[axial_power_peaking_factors]
type = PiecewiseBilinear
data_file = lhr_peaking_factors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[rod_outer_pressure]
type = PiecewiseLinear
data_file = rod_outer_pressure.csv
scale_factor = 1.e+06
format = columns
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = temp_outer_clad.csv
scale_factor = 1.
axis = 1 # (0,1,2) => (x,y,z)
[]
[q] # same as linear_heat_rate for the base irradiation
type = PiecewiseLinear
data_file = lhr_average.csv
scale_factor = 1.e+03
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heat_sink_temperature.csv
scale_factor = 1.
axis = 1 # (0,1,2) => (x,y,z)
[]
[average_coolant_htc]
type = PiecewiseLinear
data_file = htc_average.csv
scale_factor = 1.
format = columns
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '0 125690842. 125691189.5'
y = '9 9 8 '
direction = 'right'
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
format = columns
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
initial_condition = 4.65e-06
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_hflux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[thcond]
type = MaterialRealAux
property = thermal_conductivity
variable = thermal_conductivity
block = pellet_type_1
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxi_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
execute_on = 'initial linear'
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[coolant_hflux]
type = MaterialRealAux
property = output_heat_flux
variable = coolant_hflux
boundary = 2
execute_on = 'initial linear'
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
execute_on = 'initial linear'
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
execute_on = 'initial linear'
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
execute_on = 'initial linear'
[]
[pelletid]
type = PelletIdAux
block = pellet_type_1
variable = pellet_id
a_lower = 8.5e-03
a_upper = 448.5e-03
number_pellets = 44
execute_on = initial
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
[]
[clad]
block = clad
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = pellet_type_1
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
num_radial = 50
bias = 0.95
num_axial = 20
a_lower = 8.5e-03
a_upper = 448.5e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.105e-03
fuel_volume_ratio = 1.
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04487 0.95513 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.e+07
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
normal_smoothing_distance = 0.1
roughness_secondary = 1.8e-07
roughness_primary = 2.e-06
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 124861061.
refab_type = 0
[]
[]
#TODO: Add option in StandardLWRFuelRodOutputs to compute plenum temperature this way.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_outer_temperature
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
function = rod_outer_pressure
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.6e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 124861061.
refab_pressure = 4.e+06
refab_temperature = 293.15
refab_volume = 1.7e-05
[]
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 0.
end_time = 124861061.0
[]
#[period1]
# type = TimePeriod
# disable_objects = 'BCs/clad_outer_temp'
# start_time = 125690771.0
# end_time = 125691189.5
#[]
[]
[CoolantChannel]
[convective_clad_surface] # PWR conditions (ignored after base irradiation)
boundary = '1 2 3'
variable = temp
heat_transfer_mode = heat_transfer_mode # prescribe htc until end of blowdown. Then use radiative (+ convective prescribed)
heat_transfer_coefficient = average_coolant_htc # For base irradiation, using averge htc from a previous simulation. Afterwards, use constant values (from jernkvist) plus radiation from end of blowdown
effective_emissivity = 0.6 # 0.75 # cf. Jernkvist
inlet_temperature = heat_sink_temperature # K
#inlet_pressure = 15.5e+06 # Pa
#inlet_massflux = 3800. # kg/m^2-s
rod_diameter = 9.5e-03 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
compute_enthalpy = false #true
#oxide_thickness = oxide_thickness
#heat_transfer_mode = 1 # Natural convection
#htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet_type_1
fragmentation_model = BARANI
rod_ave_lin_pow = linear_heat_rate
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
initial_fuel_density = 10447.
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
#burnup_function = burnup #TODO For consistency, we should specify burnup_function rather than fission_rate,
#but keeping it this way to match the SM model
initial_grain_radius = 4.65e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 8.21e-03
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
diametral_gap =150.e-06
burnup_relocation_stop = 1.e+20
eigenstrain_name = fuel_relocation_eigenstrain
relocation_activation1 = 19685.039
[]
[fission_gas]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.0468
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING_BURNUP
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.
specific_heat = 330.
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0 #TODO: It is odd to have different values for fuel and clad, but keeping this way to match SM
eigenstrain_name = clad_thermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1.e+11
poissons_ratio = 0.3
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
#TODO: The parameters below really should be provided, but they weren't specified in the SM model.
# They may have not been included because irradiation creep wasn't modeled. However, they are used in the thermal
# creep model as well.
# fast_neutron_flux = fast_neutron_flux
# fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
#eff_strain_rate_plast =
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temp
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_tol = 1.e-02 # <--- l_tol is ignored when EW is used.
#l_tol = 8.e-03
line_search = 'none'
l_max_its = 200
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = 0.
n_startup_steps = 1
#end_time = 124861061. # End of base irradiation
end_time = 125690771. # Blowdown. End prescribing clad outer temperature.
#end_time = 125690842. # End of blowdown
#end_time = 125691189.5
dtmax = 5.e+05
dtmin = 0.00000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = timestep_material
dt = 1.e+02
#growth_factor = 1.1
#optimal_iterations = 4
#iteration_window = 2
timestep_limiting_function = forced_times #linear_heat_rate
max_function_change = 2000.
force_step_every_function_point = true
time_t = '121509219. 124861061. 125680151. 125690151. 125690771. 125691027. 125691033.'
time_dt = '5.e+05 1.e+04 1.e+04 10. 5. 0.5 5. '
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = pellet_type_1
pellet_id = pellet_id
temperature = temp
a_lower = 8.5e-03
a_upper = 448.5e-03
pellet_radius = 4.105e-03
number_pellets = 44
execute_on = 'initial linear'
[]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = linear_heat_rate
execute_on = 'initial timestep_end'
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[oxygen_fract_max]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[oxygen_fgain_max]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfgain_total
execute_on = 'initial timestep_end'
[]
[creep_rate_max]
type = ElementExtremeValue
value_type = max
variable = creep_rate
block = clad
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[stress_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_midplane]
type = NodalVariableValue
nodeid = 676 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_tclow]
type = NodalVariableValue
nodeid = 826 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_tchigh]
type = NodalVariableValue
nodeid = 511 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_plenum_mid]
type = NodalVariableValue
nodeid = 241 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_inner_midplane]
type = NodalVariableValue
nodeid = 679 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_max]
type = NodalExtremeValue
boundary = '1 2 3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_ave]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_central]
type = NodalVariableValue
variable = temp
nodeid = 1569 # !! Mesh dependent
execute_on = 'initial timestep_end'
[]
[temp_fuel_outer_max]
type = NodalExtremeValue
boundary = 10
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_outer_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = hoop_strain
execute_on = 'initial timestep_end'
[]
[stress_clad_hoop_outer_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = hoop_stress
execute_on = 'initial timestep_end'
[]
[contact_pressure_midplane]
type = ElementalVariableValue
elementid = 1300 # !! Mesh dependent
variable = contact_pressure
execute_on = 'initial timestep_end'
[]
[oxide_thickness_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = oxide_thickness
execute_on = 'initial timestep_end'
[]
[gap_conductance_average]
type = SideAverageValue
boundary = 10
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[coolant_htc_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = coolant_htc
execute_on = 'initial timestep_end'
[]
[coolant_htc_average]
type = SideAverageValue
boundary = 2
variable = coolant_htc
execute_on = 'initial timestep_end'
[]
[coolant_hflux_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = coolant_hflux
execute_on = 'initial timestep_end'
[]
[coolant_hflux_average]
type = SideAverageValue
boundary = 2
variable = coolant_hflux
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.20435313e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = 27_1_mesh.e
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 7.5e-6
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '-100 0 100 1e8'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[]
[BCs]
[fuel_wall_temp]
type = DirichletBC
variable = temp
boundary = '10'
value = 673
preset = false
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = 3
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 2e8
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 6
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 3
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 3
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
block = 3
execute_on = linear
burnup_function = burnup
type = ElementIntegralPower
variable = temp
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127
[]
[ave_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 174 # Paraview GlobalNodeID 175 at (0.0, 0.00862374)
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = false
color = false
print_linear_residuals = true
[csv]
type = CSV
execute_on = final
[]
[chkfile]
type = CSV
show = 'burnup fis_gas_percent fuel_center_temperature rod_total_power pellet_volume'
execute_on = final
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'fis_gas_percent >= 0.01'
[]
[]
(assessment/LWR/validation/Tribulation/analysis/BN3X15/BN3X15.i)
initial_fuel_density = 10414
[GlobalParams]
density = ${initial_fuel_density} # 94.843 % TD assuming TS 10980
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
initial_porosity = 0.05157
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9956
pellet_outer_radius = 0.00402
pellet_mesh_density = customize
nx_p = 11
ny_p = 243
clad_bot_gap_height = 0.001
clad_gap_width = 100.0e-6
clad_thickness = 0.00063
clad_mesh_density = customize
nx_c = 4
ny_c = 249
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.0952
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = 3
initial_condition = 8.39e-6 # 2D grain radius 10.76e-6/2*1.56
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseBilinear
data_file = BN3X15_power.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 50807520 50893920 50980320 85442688 85529088 85615488 121321152 121407552'
y = '0.0073804 1 1 0.0073804 1 1 0.0073804 1 1 0.0073804'
[]
[flux]
type = PiecewiseBilinear
data_file = BN3X15_fast_flux.csv
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = BN3X15_clad_temp.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[timestep_function]
type = PiecewiseLinear
data_file = BN3X15_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0576 0.9424 0 0 0 0'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 0.3e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 13.729e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 980665
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.017
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10414
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = NO_TRANSIENT
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 121407552
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 20
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = timestep_function
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[fuel_max_temp]
type = ElementExtremeValue
block = 3
variable = temp
[]
[fuel_average_temp]
type = ElementAverageValue
block = 3
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage fuel_average_temp'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.i)
# This file was created using BIF with the following inputs:
# FK04/FK04.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.053182
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
block = '1 3'
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/Tribulation/analysis/BN1X4/BN1X4.i)
initial_fuel_density = 10373
[GlobalParams]
density = ${initial_fuel_density} # 94.747 % TD assuming TS 10980
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
initial_porosity = 0.05526
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9976
pellet_outer_radius = 0.00402
pellet_mesh_density = customize
nx_p = 11
ny_p = 243
clad_bot_gap_height = 0.001
clad_gap_width = 100.0e-6
clad_thickness = 0.00063
clad_mesh_density = customize
nx_c = 4
ny_c = 249
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.0934
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = 3
initial_condition = 8.58e-6 # 2D grain radius 11e-6/2*1.56
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseBilinear
data_file = BN1X4_power.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 34462368 34548768 34635168 90055584 90141984'
y = '0.0073804 1 1 0.0073804 1 1 0.0073804'
[]
[flux]
type = PiecewiseBilinear
data_file = BN1X4_fast_flux.csv
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = BN1X4_clad_temp.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[timestep_function]
type = PiecewiseLinear
data_file = BN1X4_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0825 0.9175 0 0 0 0'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 0.3e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 13.729e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.96133e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.025
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10373
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = NO_TRANSIENT
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 90141984
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 20
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = timestep_function
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[fuel_max_temp]
type = ElementExtremeValue
block = 3
variable = temp
[]
[fuel_average_temp]
type = ElementAverageValue
block = 3
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage fuel_average_temp'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ022/TSQ022_1pt5.i)
# Model is of a 10 slice pellet stack in 1.5D
# Top plenum height of 213.45 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0011684 #annular pellets
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.21445
slices_per_block = 10
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.892e-6 # ((11.1+10.9+12.2)/3)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ022_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ022_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141789874 141793474' # -100 @ 101326 Pa, 0 to 141789874 @ 15.517 MPa, 141793474 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ022_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ022_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ022_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress
strain_xx strain_xy strain_yy strain_zz'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_xx strain_xy strain_yy strain_zz creep_strain_xx creep_strain_xy
creep_strain_yy creep_strain_zz'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # checked with paraview
a_upper = 3.81705 # checked with paraview
fuel_outer_radius = .0041275 # checked with paraview
fuel_inner_radius = .0011684 # Checked with paraview
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
fuel_volume_ratio = 1.0
order = Constant
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic # #changed to match 1.5d example problem
penalty = 1e9
model = frictionless
#normal_smoothing_distance = 0.1 # This option does not play nicely with 1.5D
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
#normal_smoothing_distance = 0.1 # This option does not play nicely with 1.5D
[]
[]
[BCs]
# No displacement boundary conditions are necessary for annular pellets because of the
# axisymmetric stress divergence which creates the additional constraint
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.517e6
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
diameter = 0.008255
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 0.0001778
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 141793474 #141789874+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_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
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81381 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
nodeid = 264 #coords (0.0, 2.10084)
variable = temp
execute_on = 'initial timestep_end'
[]
[FCT_slice4]
type = NodalVariableValue
nodeid = 231 #coords (0.0, 1.71945)
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[gap_slice6]
type = NodalVariableValue
variable = penetration
nodeid = 328 #coords (0.0041275, 2.48222)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 295 #coords (0.0041275, 2.10084)
[]
[gap_slice4]
type = NodalVariableValue
variable = penetration
nodeid = 262 #coords (0.0041275, 1.71945)
[]
[contact_pressure_slice6]
type = NodalVariableValue
variable = contact_pressure
nodeid = 328 #coords (0.0041275, 2.48222)
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 295 #coords (0.0041275, 2.10084)
[]
[contact_pressure_slice4]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 #coords (0.0041275, 1.71945)
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'average_burnup fis_gas_percent FCT rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/solid_swelling_only_small_strain.i)
#
# Test of fission product swelling - solid only
#
# With a burnup of 0.01719, the volumetric strain should be 0.01.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = small
eigenstrain_names = swelling_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.01719'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[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
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
eigenstrain_name = swelling_strain
initial_fuel_density = 10430.0
include_densification = false
include_gas_swelling = false
[]
[fuel_stress]
type = ComputeLinearElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
end_time = 1
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temp'
file_base = solid_swelling_only_small_strain_out
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_191_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.021861442
pellet_height = 0.265388558
pellet_quantity = 1
clad_bot_gap_height = 0.01275
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 166755600 166842000'
y = '0.006537 1 1 0.006537'
scale_factor = 15.5e6
[]
[clad_surface_temperature]
type = PiecewiseBilinear
axis = 1
data_file = clad_temperature.csv
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 166842000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 166842000
refab_pressure = 11e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[clad_temp]
type = FunctionDirichletBC
function = clad_surface_temperature
variable = temperature
boundary = 2
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
# [terminator]
# type = Terminator
# expression = 'burst > 0'
# []
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.0095 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
rod_ave_lin_pow = power_history
temperature = temperature
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# n_startup_steps = 1
end_time = 166843509.6
dtmax = 20
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(test/tests/standard_lwr_outputs_action/mini_complete_rod.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 2
pellet_mesh_density = coarse
clad_mesh_density = coarse
plenum_fuel_ratio = 0.177033
[]
[]
[Variables]
[temperature]
initial_condition = 580.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0.000000 10800'
y = '0.000000 16404.200000' #LHR5
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800'
z = '1.0 1.0 1.0 1.0'
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
scale_factor = 1
x = '0 10800.0'
y = '0.00651 1.0'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = finite
[]
[clad]
block = clad
add_variables = true
strain = finite
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 6
num_axial = 2
a_lower = 0.00351
a_upper = 0.02723
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
output_initial_moles = initial_moles
temperature = plenum_temperature ## generated by the standard outputs action
volume = plenum_volume ## generated by the standard outputs action
material_input = fission_gas_released ## generated by the standard outputs action
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
gbs_model = false
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 200
dtmax = 200
dtmin = 200
[]
[StandardLWRFuelRodOutputs]
rod_component = both
fuel_pellet_blocks = pellet
[]
[Outputs]
exodus = false
color = false
csv = true
perf_graph = true
[]
(assessment/LWR/validation/IFA_636/analysis/IFA_636_solid_swell/IFA_636_solid_swell.i)
initial_fuel_density = 10551.78
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_mesh_density = customize
clad_mesh_density = customize
pellet_quantity = 1
pellet_height = 0.392
pellet_outer_radius = 4.097e-3
ny_p = 40
nx_p = 11
clad_gap_width = 78e-6
clad_bot_gap_height = 1e-3
plenum_fuel_ratio = 0.21628
clad_thickness = 0.5715e-3
nx_c = 4
ny_c = 80
ny_cl = 3
ny_cu = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 5e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = IFA_636_power_history.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = IFA_636_axial_peaking.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 213162351 213260400'
y = '0.0307 1 1 0.0307'
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = IFA_636_clad_bc.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_swelling_eigenstrain
fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
creep_strain_xx creep_strain_xy creep_strain_yy creep_strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6e12
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
execute_on = timestep_end
block = pellet
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00324000
a_upper = 0.39524
fuel_volume_ratio = 1
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0040975
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0425 0.9575 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.33e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
initial_fuel_density = 10551.78
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_swelling_eigenstrain
[]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.039
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
diameter = 0.008194
diametral_gap =156.0e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.029
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.039
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'clad_creep'
tangent_operator = 'elastic'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradition_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 213260400
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
burnup_function = burnup
variable = temp
[]
[fuel_disp_y_average]
type = AverageNodalVariableValue
boundary = top_of_top_pellet
variable = disp_y
[]
[volumetric_strain]
type = ElementAverageValue
block = pellet
variable = deltav_v0_swe
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet
cladding_blocks = clad
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released fuel_disp_y_average rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
# Other changes were added after that process.
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/HBEP/analysis/BK370/HBEP_BK370.i)
initial_fuel_density = 10233
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 5 # 20 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = HBEP.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = BK370_linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK370_power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 108313920 108317520'
y = '0.007382 1 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = BK370_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear #PiecewiseConstant
data_file = BK370_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK370_clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz
vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_hoop]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = clad
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.88e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =1.7e-4 #diameteral gap
relocation_activation1 = 5000 # initial relocation activation power set to 5kW/m
burnup_relocation_stop = .04
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 300
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 50
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 108317520
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 2e6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block =3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.017 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 3
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_hundredslice.i)
# Model is of a 10 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 100
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain fuel_volumetric_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
fuel_pin_geometry = pin_geometry
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
penalty = 1e7
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4 #8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_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
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 231 # Global node id 232, at coordinates (0.0, 1.71774, 0.0)
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 4043 #coords (0.0041275, 3.62274)
[]
[top_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 847 #coords (0.0042164, 3.62274)
[]
[plenum_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 892 #coords (0.0042164, 3.96053)
[]
[top_radial_strain_fuel]
type = ElementalVariableValue
variable = strain_xx
elementid = 203
[]
[top_axial_strain_fuel]
type = ElementalVariableValue
elementid = 203
variable = strain_yy
[]
[top_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 36
[]
[top_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 36
[]
[plenum_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 40
[]
[plenum_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 40
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[pellet_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_surface_temp'
#[]
#[pellet_center_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 12
# sort_by = y
# outputs = 'outfile_FCT'
#[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[outfile_fuel_surface_temp]
# type = CSV
# execute_on = linear
#[]
#[outfile_FCT]
# type = CSV
# execute_on = linear
#[]
[console]
type = Console
max_rows = 25
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_10/case_10_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
[GlobalParams]
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC_OPyC]
block = 'IPyC OPyC'
strain = finite
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[rest]
block = 'fuel buffer SiC'
strain = finite
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
density = 10810.0
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18 # n/m^2-sec
[]
[fission_gas_release] # Sifgr fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.10176e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(test/tests/radial_power_factor/rpf_initial_burnup.i)
#
# This test checks the initial_burnup option of the Burnup block.
#
# A power of 20000 W/m for 70e6 s with fuel radius of 4.1e-3 m and density of
# 10431 kg/m^3 gives a burnup of 33.37 Mwd/kgU:
#
# 20000 W | 70e6 s | 1 d | 1 MW | | m^3 | 270
# --------------------------------------------------------------------- =
# m | | 86400 s | 1e6 W | pi*(4.1e-3 m)^2 | 10431 kg | 238
#
# 33.37010466 MWd/kgU
#
# By setting the initial burnup to half that value and running the simulation
# for half the time, the total average burnup at the end of the simulation
# will be 33.37 MWd/kgU.
#
# This can be checked in the average_burnup variable. However, the output
# burnup is in FIMA.
#
# 33.37 MWd | 1e6 W | 86400 s | .238 kgU | fission | mole U
# -------------------------------------------------------------------------- =
# kgU | 1 MW | d | mole U | 3.28451e-11 J | 6.0221415e23 atom
#
# 0.03469179122 FIMA
#
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false
[mesh]
type = FileMeshGenerator
file = 1x10.e
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = 0
[]
[power]
type = ParsedFunction
expression = '20000'
[]
[axial_power_factor]
type = ParsedFunction
expression = '1'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1373.15
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[solid]
block = 1
strain = small
incremental = true
add_variables = true
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 1
rod_ave_lin_pow = power
axial_power_profile = axial_power_factor
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0
initial_burnup = 16.68505233
rpf_active = false
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
average_burnup = average_burnup
[]
[]
[BCs]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 3
function = ramp
[]
[temp]
type = DirichletBC
variable = temp
boundary = 1
value = 1373.15
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.e-5
stress_free_temperature = 1373.15
eigenstrain_name = thermal_strain
[]
[thermal]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup
initial_porosity = 0
thermal_conductivity_model = FINK_LUCUTA
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
l_tol = 1e-5
start_time = 0.0
dt = 100000
num_steps = 350
[]
[Outputs]
time_step_interval = 20
execute_on = 'initial timestep_end final'
exodus = true
hide = 'disp_x disp_y temp'
show = 'fission_rate burnup N235 N236 N238 N239 N240 N241 N242 RPF average_burnup'
print_linear_residuals = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM073/BFM073.i)
################################################################################
#
# Description: Calvert Cliffs BFM073
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM073_power.csv
# axial peaking factor file BFM073_axial_peaking.csv
# flux boundary condition file BFM073_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31914
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM073_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM073_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179191453 179191813'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179191453 179191813'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM073_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179191813
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/FUMEXII_Regate/analysis/Regate_smeared.i)
initial_fuel_density = 10360
[GlobalParams]
density = ${initial_fuel_density}
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = regate_mesh_smeared.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.675e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = regate_linear_power.csv
scale_factor = 1
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = regate_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 98406792 98407164 98407291 98407445 99578736 99580326'
y = '0.00654 1 1 0.00654 0.00654 0.839 0.839 0.00654'
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = regate_cladding_temperature.csv
scale_factor = 1
format = columns
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
data_file = regate_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_zz
creep_strain_xx elastic_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
factor = 1
function = fast_neutron_flux_function
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.4444
fuel_inner_radius = 0
fuel_outer_radius = 0.004096
fuel_volume_ratio = 1
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04487 0.95513 0 0 0 0'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_wall_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.5e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10360
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
initial_porosity = 0.05246
block = 3
temperature = temp
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.008192
diametral_gap =1.68e-5
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.015
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[plasticity]
type = IsotropicPlasticityStressUpdate
block = 1
yield_stress = 500e6
hardening_constant = 2.5e9
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 99580326
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
sync_times = '98407291'
[console]
type = Console
max_rows = 30
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/triso_failure/triso_1d_failure_error.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[high_fidelity_strength_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_change_correlation_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
factor = 1.708707e18 # n/m^2-sec
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temperature_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
flux = fast_neutron_flux
temperature = temperature
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
fluence = fast_neutron_fluence
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength]
type = GenericConstantMaterial
prop_values = '9640000 9640000 9640000'
prop_names = 'characteristic_strength_SiC characteristic_strength_IPyC characteristic_strength_OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temperature_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
characteristic_strength = characteristic_strength_SiC
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_IPyC
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_type = scalar_quantity
scalar_type = MaxPrincipal
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_OPyC
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_type = scalar_quantity
scalar_type = MaxPrincipal
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_type = scalar_quantity
scalar_type = MaxPrincipal
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_type = scalar_quantity
scalar_type = MaxPrincipal
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/example_problem_test/example_problem_test.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 2_pellet_discrete.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = ' hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000 #TM default value
burnup_relocation_stop = 1.e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
exodus = true
color = false
[console]
type = Console
output_linear = true
max_rows = 25
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
# This file was created using BIF with the following inputs:
# FK02.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.03481
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_13/case_13_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark.
#
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density} # kg/m^3
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 251e-6
buffer_thickness = 95e-6
IPyC_thickness = 41e-6
SiC_thickness = 35e-6
OPyC_thickness = 40e-6
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1298.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 9.30203234e19 # units of fissions/m**3/s
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC_OPyC]
block = 'IPyC OPyC'
strain = finite
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[rest]
block = 'fuel buffer SiC'
strain = finite
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1298.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.041666666667e18 # n/m^2-sec
[]
[fission_gas_release] # Sifgr fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1298.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1298.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1298.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1010 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1870.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 51840000
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
# ro = 346e-6
# ri = 251e-6
# vb = 4/3*pi*(ro^3-ri^3) = 1.07e-10
# buffer density = 1010
# PyC density = 1870
# fill ratio = 1010/1870
# vb*1010/1870 = 5.79e-11
# Must remove 5.79e-11 m^3 from the volume
addition = -5.79e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(test/tests/radial_power_factor/radial_power_factor.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false #Small strain doesn't require
[mesh]
type = FileMeshGenerator
file = 1x10.e
[]
[]
[Functions]
[ramp]
type = PiecewiseLinear
x = '0 7e7'
y = '1373.15 1473.15'
[]
[power]
type = ParsedFunction
expression = '20000'
[]
[axial_power_factor]
type = ParsedFunction
expression = '1'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1373.15
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[solid]
block = 1
strain = small
incremental = true
add_variables = true
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 1
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
axial_power_profile = axial_power_factor
isotopes = 'U235 U238'
isotope_fractions = '0.05 0.95'
rpf_active = true
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[BCs]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 3
function = ramp
[]
[temp]
type = DirichletBC
variable = temp
boundary = 1
value = 1373.15
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.e-5
stress_free_temperature = 1373.15
eigenstrain_name = thermal_strain
[]
[thermal]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup
initial_porosity = 0
thermal_conductivity_model = FINK_LUCUTA
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
l_tol = 1e-5
start_time = 0.0
dt = 100000
num_steps = 700
[]
[Outputs]
time_step_interval = 20
exodus = true
show = 'fission_rate burnup N235 N236 N238 N239 N240 N241 N242 RPF'
[]
(test/tests/uo2_transient_fission_gas_release/uo2_pulverization_phasefield2_transient_FGR.i)
# This file is to test the transient fission gas release model that accounts for
# the amount of fission gas released as a result of fuel pulverization. it is
# based on the input file called uo2_pulverization_mesoscale.i, which tests the
# pulverization criteria for UO2 fuel with evolve_bubble_pressure_hbs = true and
# using the 3D phase field criterion for pulverization.
# In the test 5 axial fuel slices are modeled without cladding with an outer fuel
# radius of 4.5 mm and slice height of 0.1 m. Ten radial finite elements are used.
# The burnup increases linearly from the fuel centerline to the fuel surface.
# Temperature is held at constant T = 673.15 K from t = 0 to t = 100, followed
# by a ramp in temperature from t = 100 to t = 125. Pulverization will occur
# during the ramp only, in the rim region where a significant amount of high burnup
# structure formation has begun. Local pulverization is tracked with the material
# property pulverized, which is 0 where pulverization has not occured and 1 where
# it has occurred. A material property uses the local pulverization to compute the
# amount of fission gas released as a results of fuel pulverization.
# This material property is output to the exodus file for this test.
# At each time step, the pulverized material property is computed, as well as
# the bubble radius and amount of fission gas in bubbles. These material property
# are then used to determine the amount of fission gas release due to pulverization.
# This amount predicted by the material block
# UO2PulverizationTransientFissionGasRelease is compared with analytical calculations
# made in the material block fission_gas_released_amount for verification.
# This input is the non-AD version.
hydrostatic_stress_constant = 1e7
[GlobalParams]
value_range_behavior = WARN
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
include_clad = false
fuel_height = 0.5
include_plenum = false
nx_p = 10
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 900, 900+(t-100)*200)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = MaterialRealAux
block = fuel
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = '10 12'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
ig_bubble_model = MECHANISTIC_AAGESEN
hbs_model = true
hbs_material = hbs_formation
pulverization_model = true
pulverization_transient_fission_gas_release_material = UO2PulverizationTransientFissionGasRelease
ig_diff_algorithm = FORMAS
hydrostatic_stress_const = ${hydrostatic_stress_constant}
igdiffcoeff_scalef_HBS = 1e24 # Ensures that all the generated fission gases diffuse from the HBS matrix to the HBS bubbles
[]
[uo2pulverizationmesoscale]
type = UO2PulverizationMesoscale
block = fuel
temperature = temperature
output_properties = pulverized
pulverization_criterion_type = phase_field_3D
outputs = exodus
[]
[dummy_stress]
type = GenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-${hydrostatic_stress_constant} -${hydrostatic_stress_constant} -${hydrostatic_stress_constant} 0 0 0'
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = HighBurnupStructureFormation
block = fuel
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[fission_gas_density_bubble_HBS] # moles/m^3
type = ParsedMaterial
block = fuel
property_name = 'rho_FG_hbs'
material_property_names = 'atom_per_bubble_GB_HBS bubble_GB_volume_density_HBS'
constant_names = 'Na'
constant_expressions = '6.02214076e23'
expression = 'atom_per_bubble_GB_HBS * bubble_GB_volume_density_HBS / Na'
outputs = exodus
[]
[opened_pore_volume_fraction] # -
type = ParsedMaterial
block = fuel
property_name = 'f_V_pul'
material_property_names = 'hbs_porosity bubble_radius_GB_HBS'
constant_names = 'fragment_size c_p c_r c_0'
constant_expressions = '5e-5 0.03 5.17 0.02'
expression = 'c_p * hbs_porosity + c_r * bubble_radius_GB_HBS/fragment_size + c_0'
outputs = exodus
[]
[fission_gas_released_amount_analytical] # moles/m^3
type = ParsedMaterial
block = fuel
property_name = 'fis_gas_rel'
material_property_names = 'f_V_pul rho_FG_hbs pulverized'
expression = 'pulverized * f_V_pul * rho_FG_hbs'
outputs = exodus
[]
[UO2PulverizationTransientFissionGasRelease] # moles/m^3
type = UO2PulverizationTransientFissionGasRelease
block = fuel
outputs = exodus
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized_aux
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[]
[Postprocessors]
[FG_amount_bubble_HBS]
type = LayeredElementIntegralMaterialProperty
mat_prop = rho_FG_hbs
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[FGR_analytical]
type = LayeredElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[FGR]
type = LayeredElementIntegralMaterialProperty
mat_prop = gas_concentration_release_pulverization
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[FGR_pps_diff_bison_analytical]
type = DifferencePostprocessor
value1 = FGR_analytical
value2 = FGR
[]
[FG_pps_diff_total_released]
type = DifferencePostprocessor
value1 = FG_amount_bubble_HBS
value2 = FGR
[]
[volume_domain]
type = LayeredElementIntegralMaterialProperty
mat_prop = 1
block = fuel
execute_on = TIMESTEP_END
fuel_pin_geometry = fuel_pin_geometry
[]
[hbs_volume]
type = LayeredElementIntegralMaterialProperty
mat_prop = hbs_volume_fraction
block = fuel
execute_on = TIMESTEP_END
fuel_pin_geometry = fuel_pin_geometry
[]
[hbs_volume_fraction]
type = ParsedPostprocessor
pp_names = 'hbs_volume volume_domain'
expression = 'hbs_volume / volume_domain'
execute_on = TIMESTEP_END
[]
[pulverized_volume]
type = LayeredElementIntegralMaterialProperty
mat_prop = pulverized
block = fuel
execute_on = TIMESTEP_END
fuel_pin_geometry = fuel_pin_geometry
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 125
dt = 1
[]
[Outputs]
exodus = true
csv = true
file_base = uo2_pulverization_phasefield2_transient_FGR_out
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = 0.0170917878663391
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
exodus = true
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
# execute_on = 'FINAL'
# create_final_symlink = true
file_base = 'clad/new'
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/TSQ002_1pt5.i)
# Model is of a 10 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 10
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress strain_xx strain_yy strain_zz'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_xx strain_yy strain_zz creep_strain_xx creep_strain_xy
creep_strain_yy creep_strain_zz'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324 # checked with paraview
a_upper = 3.81705 # checked with paraview
fuel_outer_radius = .0041275 # checked with paraview
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic # #changed to match 1.5d example problem
penalty = 1e7 #changed to match 1.5D example problem to 1e7 from 1e9
model = frictionless
#normal_smoothing_distance = 0.1 # This option does not play nicely with 1.5D
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
#normal_smoothing_distance = 0.1 # This option does not play nicely with 1.5D
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
diameter = 0.008255
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 0.0001778 #diameteral gap
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate #fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-3
# controls for nonlinear iterations
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_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
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81381 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
nodeid = 264 #coords (0.0, 2.10084)
variable = temp
execute_on = 'initial timestep_end'
[]
[FCT_slice4]
type = NodalVariableValue
nodeid = 231 #coords (0.0, 1.71945)
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[gap_slice6]
type = NodalVariableValue
variable = penetration
nodeid = 328 #coords (0.0041275, 2.48222)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 295 #coords (0.0041275, 2.10084)
[]
[gap_slice4]
type = NodalVariableValue
variable = penetration
nodeid = 262 #coords (0.0041275, 1.71945)
[]
[contact_pressure_slice6]
type = NodalVariableValue
variable = contact_pressure
nodeid = 328 #coords (0.0041275, 2.48222)
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 295 #coords (0.0041275, 2.10084)
[]
[contact_pressure_slice4]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 #coords (0.0041275, 1.71945)
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'average_burnup fis_gas_percent FCT rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM034/BFM034.i)
################################################################################
#
# Description: Calvert Cliffs BFM034
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM034_power.csv
# axial peaking factor file BFM034_axial_peaking.csv
# flux boundary condition file BFM034_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31392
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM034_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM034_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179410295 179410655'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179410295 179410655'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM034_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179410655
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/uo2_thermal/HBSporosity/test.i)
# This test case is prepared to test the thermal conductivity using the Halden model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# We employ an artificial porosity shape that varies from 0.05 (initial_porosity) to around 0.13.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the Halden UO2 thermal
# conductivity model. Two different porosity correction methods (the Kampf and Lee models)
# are employed to compute the HBS thermal conductivity.
# The BISON predictions (BISON_k) compared to the expected results (exp_k)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# exp_k_lee BISON_k_lee percent_error_lee exp_k_kampf BISON_k_kampf percent_error_kampf
# 1.923374665 1.923374674 -4.64E-07 1.923070652 1.92307065 8.73E-08
# 1.912817787 1.912817795 -4.58E-07 1.912332564 1.912332562 1.30E-07
# 1.903379731 1.90337974 -4.53E-07 1.902763112 1.902763108 1.61E-07
# 1.895060193 1.895060202 -4.48E-07 1.894338874 1.89433887 1.85E-07
# 1.887861419 1.887861427 -4.44E-07 1.887052808 1.887052804 2.05E-07
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[effective_burnup]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = BurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermalUO2]
type = UO2Thermal
temperature = T
burnup = burnup
initial_porosity = 0.05
thermal_conductivity_model = HALDEN
oxy_to_metal_ratio = 2.0
Gd_content = 0.0
[]
[density]
type = ParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[HBS_volume_fraction]
type = HighBurnupStructureFormation
burnup = burnup
temperature = T
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_effective_burnup]
type = ElementIntegralMaterialProperty
mat_prop = effective_burnup
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
file_base = 'test_default'
[]
(test/tests/ifba_he_production/ifba_examp_template.i)
#
# 2-D RZ One Pellet Test - Coarse mesh example of IFBA layer
#
# This is an input template for a fast running example using the IFBA
# postprocessor. All of the possible ways to specify the IFBA layer are run
# using this template in a regression test format.
#
# The expected ouputs for each test depends on the model equation being used
# to calculate the He produced. For the burnup based equation, the He moles
# released at the end of the calculation is 1.4897e-6. A hand calculation is
# reproduced in the Excel spreadsheet IFBA_He_Calc included in the test
# directory. The burnup equation result computed for the same inputs is
# 1.4902e-6.
#
# Using the FRAPCON equation calculates a rate of He production, so comparing
# the first couple of time steps of the simulation to the hand calculation is
# more straightforward. Comparing the BISON results to the hand calculation is
#
# Time(s) He Prod (BISON) He Prod (Excel)
# 1000 1.01465e-10 1.01465e-10
# 3000 7.10250e-10 7.18769e-10
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain'
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
refab_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = 'clad_thermal_strain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 2.5e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 #BWR change: length of fuel stack in meters (5*pellet height)
[]
[he_prod]
type = IFBAHeProduction
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
[]
[outfile]
type = CSV
delimiter = ' '
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2c/27_2c.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (200 MeV)
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = FUMEXII27_2c_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[grain_radius]
block = pellet_type_1
initial_condition = 37.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = 27_2c_linear_power.csv # power input as thermal power (BNFL-Case-27-2c-history.txt)
scale_factor = 1.025641
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = 27_2c_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[ave_clad_surface_temp]
type = PiecewiseLinear
data_file = 27_2c_clad_outer_temperature.csv
scale_factor = 1
format = columns
[]
[axial_clad_surface_temp_profile]
type = PiecewiseBilinear
data_file = 27_2c_axial_temperature_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 224856734 224865601'
y = '6.53288e-3 1 1 6.53288e-3'
[]
[clad_surface_temperature]
type = CompositeFunction
functions = 'ave_clad_surface_temp axial_clad_surface_temp_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet_type_1
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = pellet_type_1
burnup_function = burnup
fraction = 0.975 # Ratio of thermal heat to total heat for the rod
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 3.66123981
a_lower = 0.00324
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.08 0.92 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
block = clad
factor = 4.5e13 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_surface_temp]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_surface_temperature
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.5e6 # FUMEXII_27(2c) => 25 bar (2.5 MPa) (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diameter = 0.0082
diametral_gap =0.00016
burnup_relocation_stop = 0.026
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.05
gbs_model = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 204197750
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
linear_iteration_ratio = 100
iteration_window = 2
timestep_limiting_function = power_profile
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
outputs = exodus
[]
[int_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[int_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet_type_1
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = '3'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet_type_1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_total_power'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM156/BFM156.i)
################################################################################
#
# Description: Calvert Cliffs BFM156
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM156_power.csv
# axial peaking factor file BFM156_axial_peaking.csv
# flux boundary condition file BFM156_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.34015
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM156_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM156_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177406235 177406595'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177406235 177406595'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM156_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
# [Dampers]
# [limitT]
# type = MaxIncrement
# variable = temp
# max_increment = 50
# []
# []
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177406595
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/triso_failure/ad_ipyc_characteristic_strength.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
use_automatic_differentiation = true
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
use_automatic_differentiation = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = ADDirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = ADPressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[max_principal_stress]
type = ADRankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = ADFastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ADComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = ADPyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal]
type = ADUO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = ADStrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = ADHeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = ADStrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = ADHeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = ADStrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = ADHeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = ADStrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = ADGenericConstantMaterial
prop_values = '9640000'
block = SiC
prop_names = 'characteristic_strength'
[]
[characteristic_strength_PyC]
type = ADPyCCharacteristicStrength
temperature = temp
X = 1.02
flux_conversion_factor = 0.85
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-8
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = ADWeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = ADWeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = ADWeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[characteristic_strength]
type = ADElementExtremeMaterialProperty
mat_prop = characteristic_strength
block = IPyC
value_type = max
[]
[flence]
type = ADElementExtremeMaterialProperty
mat_prop = fast_neutron_fluence
block = IPyC
value_type = max
[]
[]
[Outputs]
file_base = triso_ipyc_characteristic_strength_out
print_linear_residuals = true
time_step_interval = 1
csv = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/reloc_recov_escore_mod_rz.i)
#
# Analytical solution for burnup = 0 and varying linear power from 0 to 25 kW/ft
# for GAPCON relocation model
#
# Power (kW/ft) Relocation Strain
# 0 0.00065957
# 1 0.00081745
# 2 0.00097533
# 3 0.00113322
# 4 0.00129110
# 5 0.00144898
# 6 0.00160687
# 7 0.00176475
# 8 0.00192263
# 9 0.00208052
# 10 0.00223840
# 11 0.00239628
# 12 0.00255417
# 13 0.00271205
# 14 0.00286993
# 15 0.00302782
# 16 0.00318570
# 17 0.00334358
# 18 0.00350147
# 19 0.00365935
# 20 0.00381723
# 21 0.00397512
# 22 0.00413300
# 23 0.00429088
# 24 0.00444877
# 25 0.00460665
[Mesh]
coord_type = RZ
displacements = 'disp_x disp_y'
patch_size = 20
[mesh]
type = FileMeshGenerator
file = pellet_clad.e
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 293.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[relocation_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup]
type = PiecewiseLinear
x = '0.0 40.0'
y = '0.0 0.08'
[]
[q]
type = PiecewiseLinear
x = '0.0 40.0'
y = '0.0 20.0'
scale_factor = 3280.8 #convert from kW/ft to W/M
[]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 40.0'
y = '293.0 1000.0'
[]
[dispx_ramp]
type = PiecewiseLinear
x = '0.0 20.0 40.0'
y = '0.0 150e-6 150e-6'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = finite
[fuel]
block = 2
eigenstrain_names = 'relocation_eigenstrain volumetric_swelling fuelthermal_strain'
[]
[clad]
block = 1
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
block = 2
variable = burnup
function = burnup
execute_on = 'initial linear'
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = 2
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[solid_swell]
type = MaterialRealAux
block = 2
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[gas_swell]
type = MaterialRealAux
block = 2
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[densification]
type = MaterialRealAux
block = 2
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
block = 2
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[reloc_strain]
type = MaterialRealAux
block = 2
variable = relocation_strain
property = relocation_strain
execute_on = timestep_end
[]
[elastic_strain_rr]
type = RankTwoAux
variable = elastic_strain_rr
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[total_strain_rr]
type = RankTwoAux
variable = total_strain_rr
rank_two_tensor = total_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_rr]
type = RankTwoAux
variable = stress_rr
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[elastic_strain_yy]
type = RankTwoAux
variable = elastic_strain_yy
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[total_strain_yy]
type = RankTwoAux
variable = total_strain_yy
rank_two_tensor = total_strain
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[elastic_strain_zz]
type = RankTwoAux
variable = elastic_strain_zz
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[total_strain_zz]
type = RankTwoAux
variable = total_strain_zz
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = 2
execute_on = timestep_end
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=7) and the clad (sideset=1)
[pellet_clad_mechanical]
primary = 1
secondary = 7
formulation = kinematic
model = frictionless
penalty = 1e10
[]
[]
[BCs]
[no_y_pellet_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '2 4 6 8'
value = 0.0
[]
[y_axis]
type = DirichletBC
variable = disp_x
boundary = 5
value = 0.0
[]
[left_temp]
type = FunctionDirichletBC
variable = temp
boundary = '5 6 7 8'
function = temp_ramp
[]
[clad_x_disp]
type = FunctionDirichletBC
variable = disp_x
boundary = '1 2 3 4'
function = dispx_ramp
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 2
youngs_modulus = 1e11
poissons_ratio = 0.0
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 2
[]
[relocation]
type = UO2RelocationEigenstrain
block = 2
burnup = burnup
diameter = 0.00984
rod_ave_lin_pow = q
diametral_gap =0.00016
burnup_relocation_stop = 1.0e12
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
layered_average_contact_pressure = layered_average_contact_pressure
volumetric_swelling_increment = vol_swell_increment
outputs = all
output_properties = 'recovered_relocation_strain'
eigenstrain_name = relocation_eigenstrain
relocation_model = ESCORE_modified
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = 2
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.0
eigenstrain_name = volumetric_swelling
initial_fuel_density = 10430.0
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 2
thermal_expansion_coeff = 1.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuelthermal_strain
[]
[thermal]
type = UO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = StrainAdjustedDensity
block = 2
strain_free_density = 10430.0
[]
[clad_elasticity]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.0
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[UserObjects]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 7
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_max_its = 30
nl_rel_tol = 1e-7
nl_abs_tol = 1e-9
l_tol = 1e-5
start_time = 0.0
dt = 1.0
end_time = 40.0
[]
[Postprocessors]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 2
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = 2
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = 2
[]
[densification]
type = ElementAverageValue
variable = densification
block = 2
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = 2
[]
[relocation_strain]
type = ElementAverageValue
variable = relocation_strain
block = 2
[]
[average_contact_pressure]
type = ElementalVariableValue
variable = layered_average_contact_pressure
elementid = 1
execute_on = nonlinear
[]
[contact_pressure]
type = ElementalVariableValue
variable = contact_pressure
elementid = 1
[]
[elastic_strain_rr]
type = ElementAverageValue
variable = elastic_strain_rr
block = 2
[]
[total_strain_rr]
type = ElementAverageValue
variable = total_strain_rr
block = 2
[]
[stress_rr]
type = ElementAverageValue
variable = stress_rr
block = 2
[]
[elastic_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
block = 2
[]
[total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
block = 2
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
block = 2
[]
[elastic_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
block = 2
[]
[total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
block = 2
[]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
block = 2
[]
[thermal_strain_rr]
type = DifferencePostprocessor
value1 = total_strain_rr
value2 = elastic_strain_rr
[]
[thermal_strain_yy]
type = DifferencePostprocessor
value1 = total_strain_yy
value2 = elastic_strain_yy
[]
[thermal_strain_zz]
type = DifferencePostprocessor
value1 = total_strain_zz
value2 = elastic_strain_zz
[]
[dispx_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 6
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 7
variable = volumetric_swelling_strain
[]
[recov_strain]
type = ElementalVariableValue
variable = recovered_relocation_strain
elementid = 1
[]
[]
[Outputs]
exodus = true
file_base = reloc_recov_escore_mod_rz_0_out
[chkfile]
type = CSV
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/swelling.i)
# @Requirement F2.20
# Test of combined swelling and densification (1000K)
#
# With a burnup of 0.05, the volumetric strain should be 0.0193.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'fuelthermal_strain swell'
temperature = temp
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.05'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[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
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
eigenstrain_name = swell
initial_fuel_density = 10430.0
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = '1 2 3 4 5 6 7'
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1000.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
[]
[densification]
type = ElementAverageValue
variable = densification
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
[]
[]
[Outputs]
exodus = true
file_base = swelling_out
[]
(test/tests/thermalUO2/thermalUO2_jac_test.i)
[Mesh]
[mesh]
type = FileMeshGenerator
file = pelletfine1_rz.e
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 300.0 # set initial T to ambient
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
block = 2
[]
[burnup]
order = FIRST
family = LAGRANGE
block = 2
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
block = 2
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
block = 2
value = 1.183e19 # corrected average power to 200 W/cm
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
block = 2
execute_on = linear
[]
[burnup]
type = ConstantAux
variable = burnup
value = 0.001
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[ConstantT]
type = DirichletBC
boundary = 10
variable = T
value = 500
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
temperature = T
burnup = burnup
initial_porosity = 0.015
[]
[density]
type = ParsedMaterial
block = 2
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '100 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
l_max_its = 60
nl_max_its = 15
nl_rel_tol = 1e-9
nl_abs_tol = 1e-10
l_tol = 1e-5
[]
[Outputs]
csv = true
[]
(test/tests/standard_lwr_outputs_action/four_pellets.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = four_pellets.e
[]
[]
[Variables]
[temperature]
initial_condition = 580.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0.000000 10800'
y = '0.000000 16404.200000' #LHR5
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800'
z = '1.0 1.0 1.0 1.0'
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
scale_factor = 1
x = '0 10800.0'
y = '0.00651 1.0'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
fuel_retain = 'pellet_type_2 pellet_type_3'
fuel_exclude = 'pellet_type_1 pellet_type_4'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 'pellet_type_2 pellet_type_3'
add_variables = true
strain = finite
[]
[insulator_pellets]
block = 'pellet_type_1 pellet_type_4'
add_variables = true
strain = finite
[]
[clad]
block = clad
add_variables = true
strain = finite
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = 'pellet_type_2 pellet_type_3'
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_2 pellet_type_3'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature ## generated by the standard outputs action
volume = plenum_volume ## generated by the standard outputs action
material_input = fission_gas_released ## generated by the standard outputs action
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_2 pellet_type_3'
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_2 pellet_type_3'
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_2 pellet_type_3'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[insulator_pellet_elasticity]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1 pellet_type_4'
youngs_modulus = 375e9
poissons_ratio = 0.22
[]
[insulator_pellet_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_4'
[]
[density_insulator_pellets]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_4'
strain_free_density = 3890
[]
[thermal_insulator_pellets]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_4'
thermal_conductivity = 35
specific_heat = 880
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_2 pellet_type_3'
temperature = temperature
burnup_function = burnup
gbs_model = false
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_2 pellet_type_3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 200
dtmax = 200
dtmin = 200
[]
[StandardLWRFuelRodOutputs]
rod_component = both
fuel_pellet_blocks = 'pellet_type_2 pellet_type_3'
[]
[Outputs]
exodus = false
color = false
csv = true
perf_graph = true
[]
(examples/TRISO/full_particle/1D/full_particle_1D.i)
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density}
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[temperature]
initial_condition = 1346.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
[]
[burnup]
block = fuel
[]
[grain_radius]
initial_condition = 5.0e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[buffer]
block = buffer
add_variables = true
strain = FINITE
eigenstrain_names = 'buffer_thermal_strain buffer_eigenstrain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[IPyC]
block = IPyC
add_variables = true
strain = FINITE
eigenstrain_names = 'IPyC_eigenstrain IPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[SiC]
block = SiC
add_variables = true
strain = FINITE
eigenstrain_names = 'SiC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[OPyC]
block = OPyC
add_variables = true
strain = FINITE
eigenstrain_names = 'OPyC_eigenstrain OPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[]
[Functions]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# couplings to post processor
output_initial_moles = initial_moles
temperature = ave_temperature_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18 # n/m^2-sec
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temperature
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e8
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius = grain_radius
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2.0e8
poissons_ratio = 0.345
[]
[buffer_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = buffer
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_density]
type = StrainAdjustedDensity
strain_free_density = 1000.0
block = buffer
[]
[buffer_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = buffer_thermal_strain
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[buffer_irraditation]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = buffer_eigenstrain
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IOPyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temperature
[]
[IOPyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IOPyC_density]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[IPyC_densification]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = IPyC_eigenstrain
[]
[IPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = IPyC_thermal_strain
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = SiC
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_density]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[SiC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = SiC_thermal_strain
[]
[OPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[OPyC_densification]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = OPyC_eigenstrain
[]
[OPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = OPyC_thermal_strain
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.10176e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temperature_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[min_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
value_type = min
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[min_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
value_type = min
[]
[max_xx_OPyC]
type = ElementExtremeValue
variable = stress_xx
block = OPyC
[]
[max_yy_OPyC]
type = ElementExtremeValue
variable = stress_yy
block = OPyC
[]
[min_zz_OPyC]
type = ElementExtremeValue
variable = stress_zz
block = OPyC
value_type = min
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = false
csv = true
perf_graph = true
[chkfile]
type = CSV
execute_on = Final
show = 'max_xx_IPyC max_yy_IPyC min_zz_IPyC max_xx_SiC max_yy_SiC min_zz_SiC'
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2a/27_2a.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (200 MeV)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 9.5e-4
pellet_mesh_density = customize
ny_p = 8
nx_c = 4
nx_p = 12
pellet_outer_radius = 0.005305
ny_cu = 3
ny_c = 8
clad_bot_gap_height = 1e-3
pellet_quantity = 1
pellet_height = 0.0127
ny_cl = 3
plenum_fuel_ratio = 0.45
clad_gap_width = 9.5e-5
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 7.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0.02914 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
order = CONSTANT
family = MONOMIAL
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01594
a_lower = 0.00324
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 0.88 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
execute_on = timestep_begin
factor = 1.6e12 # (n/m2-s per W/m) used HALDEN fast flux
block = 1
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 1
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
roughness_coef = 3.2
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_bc]
type = DirichletBC
variable = temp
boundary = '1 2 3'
value = 516.2 # Clad wall temp = 240+.4162*(LHR)^.75, where temp is C and LHR is kW/m
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.447e6 # Halden coolant pressure
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 5.0e5 # FUMEXII => 500 kPa pressure (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 10.61e-3
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =0.19e-3
relocation_activation1 = 5000
burnup_relocation_stop = 0.044
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 4.74e8
[TimeSteppers]
[ts1]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
outputs = exodus
[]
[intg_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[intg_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 467 # GlobalNodeID 468
variable = temp
execute_on = 'initial timestep_end'
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = '3'
[]
[]
[VectorPostprocessors]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 RPF'
height =0.00635
burnup_function = burnup
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fuel_center_temperature rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2.i)
initial_fuel_density = 10452.96
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[fuel_relo]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 172489043
end_time = 172489661
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
# axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
# hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
# end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 3.0 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
execute_on = 'initial timestep_end'
perf_graph = true
[outfile_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(examples/TRISO/two_layers/2D/two_layers.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = two_layers.e
[]
[]
[Variables]
[temp]
initial_condition = 1273.0
[]
[]
[AuxVariables]
[burnup]
initial_condition = 0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = true
strain = FINITE
eigenstrain_names = ''
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz
strain_xy strain_yz strain_xz'
[]
[buffer]
block = buffer
add_variables = true
strain = FINITE
eigenstrain_names = ''
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz
strain_xy strain_yz strain_xz'
[]
[IPyC]
block = IPyC
add_variables = true
strain = FINITE
eigenstrain_names = ''
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz
strain_xy strain_yz strain_xz'
[]
[SiC]
block = SiC
add_variables = true
strain = FINITE
eigenstrain_names = ''
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz
strain_xy strain_yz strain_xz'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1273.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[exterior_pressure_y]
type = Pressure
variable = disp_y
boundary = exterior
factor = 0.1e6
[]
[interior_pressure_x]
type = Pressure
variable = disp_x
boundary = PyCGapBndry
factor = 25e6
[]
[interior_pressure_y]
type = Pressure
variable = disp_y
boundary = PyCGapBndry
factor = 25e6
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10800.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 1
poissons_ratio = 0.345
[]
[buffer_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = buffer
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.94e10
poissons_ratio = 0.33
[]
[IPyC_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = IPyC
[]
[IPyC_temp]
type = HeatConductionMaterial
block = IPyC
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[IPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0 # kg/m^3
block = IPyC
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = SiC
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1
dtmax = 5e6
dtmin = 1
[]
[Postprocessors]
[max_xx]
type = ElementExtremeValue
variable = stress_xx
[]
[max_yy]
type = ElementExtremeValue
variable = stress_yy
[]
[max_zz]
type = ElementExtremeValue
variable = stress_zz
[]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[max_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[max_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} # 95% TD assuming TD=10980
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 9.5e-4
pellet_mesh_density = customize
ny_p = 8
nx_c = 4
nx_p = 12
pellet_outer_radius = 0.005305
ny_cu = 3
ny_c = 8
clad_bot_gap_height = 1e-3
pellet_quantity = 1
pellet_height = 0.0127
ny_cl = 3
plenum_fuel_ratio = 0.45
clad_gap_width = 9.5e-5
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[disp_x]
initial_condition = 0.0
[]
[disp_y]
initial_condition = 0.0
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = pellet
initial_condition = 7.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 43200 5e8'
y = '0 15000 15000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
order = CONSTANT
family = MONOMIAL
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 0.88 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = fuel_pin_geometry
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
execute_on = timestep_begin
factor = 1.6e12 # (n/m2-s per W/m) used HALDEN fast flux
block = clad
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
roughness_coef = 3.2
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_bc]
type = DirichletBC
variable = temp
boundary = '1 2 3'
value = 516.2 # Clad wall temp = 240+.4162*(LHR)^.75, where temp is C and LHR is kW/m
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.447e6 # Halden coolant pressure
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 5.0e5 # FUMEXII => 500 kPa pressure (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.065
relocation_activation1 = 5000
fuel_pin_geometry = fuel_pin_geometry
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
creeprate_scale_factor = 1
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 409638200
[TimeSteppers]
[ts1]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[intg_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[intg_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 467 # GlobalNodeID 468
variable = temp
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127 # rod height
[]
[]
[VectorPostprocessors]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 RPF'
height =0.00635
burnup_function = burnup
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_total_power'
execute_on = 'FINAL'
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = recover_files
sync_times = '409638200'
sync_only = true
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/burnup_action/burnup_without_actions.i)
# This test is designed as a companion test to the burnup_with_action.i input
# to clarify which input file blocks are created by the Burnup action.
#
# In this simple two block problem, the power profile is designed such that the
# power provided to the top block, block 2, is nearly twice that of the power on
# the bottom block, block 1. As a result, the fission rate on block 2 is exactly
# twice the fission rate on block 1, and the burnup on block 2 is twice the value
# of the burnup on block 1.
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
energy_per_fission = 3.20435313e-11 # J/fission (200 MeV)
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = two_separate_blocks.e
[]
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[AuxVariables]
[fission_rate_1]
block = 1
[]
[fission_rate_2]
block = 2
[]
[burnup_1]
block = 1
[]
[burnup_2]
block = 2
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100'
y = '0 40000'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.0 0.01 0.0105 0.0205'
y = '0 100'
z = '1 1 2 2 1 1 2 2'
axis = 1
[]
[burnup1]
type = BurnupFunction
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01
a_lower = 0.0
fuel_inner_radius = 0.0
fuel_outer_radius = 0.01
fuel_volume_ratio = 1.0
[]
[burnup2]
type = BurnupFunction
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.0205
a_lower = 0.0105
fuel_inner_radius = 0.0
fuel_outer_radius = 0.01
fuel_volume_ratio = 1.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source_block1]
type = NeutronHeatSource
variable = temp
block = 1
burnup_function = burnup1
[]
[heat_source_block2]
type = NeutronHeatSource
variable = temp
block = 2
burnup_function = burnup2
[]
[]
[AuxKernels]
[BurnupGrid1]
type = BurnupGrid
block = 1
execute_on = 'initial linear'
burnup_function = burnup1
variable = fission_rate_1
fission_rate = fission_rate_1
[]
[BurnupGrid2]
type = BurnupGrid
block = 2
execute_on = 'initial linear'
burnup_function = burnup2
variable = fission_rate_2
fission_rate = fission_rate_2
[]
[BurnupGrid3]
type = BurnupGrid
block = 1
execute_on = 'initial linear'
burnup_function = burnup1
variable = burnup_1
burnup = burnup_1
[]
[BurnupGrid4]
type = BurnupGrid
block = 2
execute_on = 'initial linear'
burnup_function = burnup2
variable = burnup_2
burnup = burnup_2
[]
[]
[BCs]
[block1_side_bc]
type = DirichletBC
variable = temp
boundary = 1
value = 300
[]
[block2_side_bc]
type = DirichletBC
variable = temp
boundary = 2
value = 300
[]
[]
[Materials]
[fuel_thermal1]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup1
thermal_conductivity_model = NFIR # NFIR thermal conductivity
initial_porosity = 0.05
[]
[fuel_thermal2]
type = UO2Thermal
block = 2
temperature = temp
burnup_function = burnup2
thermal_conductivity_model = NFIR # NFIR thermal conductivity
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = '1 2'
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0
dtmax = 1e4
dtmin = 100
end_time = 5e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[ave_temp_block1]
type = ElementAverageValue
block = 1
variable = temp
execute_on = 'initial timestep_end'
[]
[ave_temp_block2]
type = ElementAverageValue
block = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[rod_power_1]
type = ElementIntegralPower
variable = temp
block = 1
burnup_function = burnup1
execute_on = 'timestep_end'
[]
[rod_power_2]
type = ElementIntegralPower
variable = temp
block = 2
burnup_function = burnup2
execute_on = 'timestep_end'
[]
[rod_burnup_1]
type = RodAverageBurnup
burnup_function = burnup1
execute_on = 'timestep_end'
[]
[rod_burnup_2]
type = RodAverageBurnup
burnup_function = burnup2
execute_on = 'timestep_end'
[]
[]
[Outputs]
csv = true
exodus = false
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 1
[]
[]
(test/tests/radial_power_factor/radial_power_factor_restart1.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false #Small strain doesn't require
[mesh]
type = FileMeshGenerator
file = 1x10.e
[]
[]
[Functions]
[ramp]
type = PiecewiseLinear
x = '0 7e7'
y = '1373.15 1473.15'
[]
[power]
type = ParsedFunction
expression = '20000'
[]
[axial_power_factor]
type = ParsedFunction
expression = '1'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1373.15
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[solid]
block = 1
strain = small
incremental = true
add_variables = true
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 1
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
axial_power_profile = axial_power_factor
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[BCs]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 3
function = ramp
[]
[temp]
type = DirichletBC
variable = temp
boundary = 1
value = 1373.15
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.e-5
stress_free_temperature = 1373.15
eigenstrain_name = thermal_strain
[]
[thermal]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup
initial_porosity = 0
thermal_conductivity_model = FINK_LUCUTA
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
l_tol = 1e-5
start_time = 0.0
dt = 100000
num_steps = 280
end_time = 70000000
[]
[Outputs]
time_step_interval = 20
exodus = true
show = 'fission_rate burnup N235 N236 N238 N239 N240 N241 N242 RPF'
checkpoint = true
[]
(test/tests/sifgrs/uo2/athermal_release.i)
# This is a test for the athermal release capability included in the Sifgrs fission gas behavior model.
# The model of B.J. Lewis (JNM 148, 28, 1987) is adopted for calculating the contribution to fission gas
# release (FGR) arising from the surface-fission release mechanisms (recoil and knockout).
# Since athermal release depends on the total pellet surface area (geometrical surface + cracked surface),
# an estimation of the number and length of cracks for each pellet is introduced, based on concepts from
# M. Oguma (NED 76, 35, 1983) and D.R. Olander (Fundamental aspects of nuclear reactor fuel elements,
# Berkeley, 1976). For this purpose, the subprograms PelletIdAux and PelletBrittleZone are employed.
# The athermal release model can be activated by specifying ath_model = true. It is also necessary to
# specify the name of the linear power function (see below).
# A single pellet - constant power problem is considered for this test.
# In order to isolate the athermal release, the concurrent thermal gas release is not calculated
# (by setting the fractional bubble coverage at grain boundary saturation to infinite,
# i.e., saturation_coverage = 1.e+20).
# Also, the fission gas swelling is not calculated in this test. The results demonstrate that
# the athermal release model provides a contribution to FGR independent of thermal release and given
# by an approximately constant fraction of the generated gas, released upon creation due to the recoil
# and knockout mechanisms.
initial_fuel_density = 10417.
[GlobalParams]
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
coord_type = RZ
patch_size = 1000
[mesh]
type = FileMeshGenerator
file = single_pellet_2d.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[AuxVariables]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[crack_length]
order = CONSTANT
family = MONOMIAL
[]
[gas_ath_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = linpow_ath_test.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peaking_factors.csv
scale_factor = 1
axis = 1
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = 2
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 2
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 12
num_axial = 9
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1.
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[pelletid]
type = PelletIdAux
block = 2
variable = pellet_id
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = initial
[]
[cracklen]
type = MaterialRealAux
variable = crack_length
property = crack_length
[]
[fgath]
type = MaterialRealAux
variable = gas_ath_3
property = gas_concentration_athermal_release_volume
[]
[]
[BCs]
[convective_clad_surface]
type = ConvectiveFluxBC
boundary = '10'
variable = temperature
rate = 7500.
initial = 300.
final = 515.5
duration = 1.0e+04
[]
[top_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '21'
[]
[bottom_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '20'
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
temperature = temperature
burnup_function = burnup
[]
[density2]
type = ParsedMaterial
block = 2
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 2
temperature = temperature
burnup_function = burnup
saturation_coverage = 1.e+20
ath_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 2
pellet_id = pellet_id
temperature = temperature
pellet_radius = 0.005305
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_max_its = 100
l_tol = 1.e-04
nl_max_its = 15
nl_rel_tol = 1.e-8
nl_abs_tol = 1.e-8
start_time = 0.
end_time = 1.e+08
num_steps = 5000
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.e+06
time_t = '0 10000 '
time_dt = '2.e+03 1.e+07'
[]
[]
[Postprocessors]
[gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 2
[]
[delta_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = delta_gas_concentration_generated_total
block = 2
outputs = csv
[]
[gas_intragranular]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_intra_total
block = 2
outputs = csv
[]
[gas_intergranular]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume
block = 2
outputs = csv
[]
[gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 2
[]
[gas_released_athermal]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_athermal_release_volume
block = 2
outputs = csv
[]
[gas_released_total]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
block = 2
outputs = csv
[]
[]
[Outputs]
exodus = true
csv = true
[]
(test/tests/axial_relocation/uo2_pulverization_phasefield2.i)
# This file is to test the phase-field based pulverization criterion for UO2 fuel
# with evolve_bubble_pressure_hbs = true and using the 3D phase field criterion
# for pulverization.
# In the test 5 axial fuel slices are modeled without cladding with an outer fuel
# radius of 4.5 mm and slice height of 0.1 m. Ten radial finite elements are used.
# The burnup increases linearly from the fuel centerline to the fuel surface.
# Temperature is held at constant T = 673.15 K from t = 0 to t = 100, followed
# by a ramp in temperature from t = 100 to t = 125. Pulverization will occur
# during the ramp only, in the rim region where a significant amount of high burnup
# structure formation has begun. Local pulverization is tracked with the material
# property pulverized, which is 0 where pulverization has not occured and 1 where
# it has occurred. This material property is output to the exodus file for this test.
# At each time step, the porosity in the HBS region is calculated at each radial
# position using the correlation due to Kampf in the UO2Thermal material.
# The porosity, along with the hydrostatic stress, are used to calculate the
# critical pressure for grain boundary fracture using data from fits to phase-field
# fracture simulations. The current pressure of the most likely bubble
# size is compared to the critical pressure to determine whether pulverization has
# occurred at each quadrature point.
# Based upon the conditions and threshold given above at t = 110 s the outer three
# elements should be completely pulverized. The inner radius of the third element
# is at a radius of 3.150 mm. Therefore the layered averaged pulverized fuel volume
# (in each layer in this case) is analytically determined by:
#
# V_p = pi * L * (R_o^2 - R_p^2)
#
# where L is the slice height (0.1 m), R_o is the outer fuel radius, and R_p is the
# radius into the fuel at which pulverization ends. Therefore:
#
# V_p = pi * (0.1) * (4.5e-3^2 - 3.150e-3^2)
# V_p = 3.24448e-6 m^3 in each layer.
#
# The layered_pulverized_fuel_volume AuxVariable computed by BISON gives
# a layered volume of pulverized fuel as 3.24448e-6 m^3.
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
include_clad = false
fuel_height = 0.5
include_plenum = false
nx_p = 10
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 673.15, 673.15+(t-100)*15.5)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = MaterialRealAux
block = fuel
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = '10 12'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
hbs_model = true
hbs_material = hbs_formation
[]
[uo2pulverizationmesoscale]
type = UO2PulverizationMesoscale
block = fuel
temperature = temperature
output_properties = pulverized
pulverization_criterion_type = phase_field_3D
outputs = exodus
[]
[dummy_stress]
type = GenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-1e7 -1e7 -1e7 0 0 0'
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = HighBurnupStructureFormation
block = fuel
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized_aux
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 125
dt = 1
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2_1p5d_fr_frd.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_191_part1_1p5d_fr_frd_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.57e-3
fuel_height = 0.265388558
plenum_height = 0.034861442
elem_type = EDGE3
nx_p = 11
pellet_mesh_density = customize
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
[tangential_contact_pressure_aux]
block = fuel
[]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 166755600 166842000'
y = '0.006537 1 1 0.006537'
scale_factor = 15.5e6
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
# Add this to accident part
[clad_surface_temperature]
type = PiecewiseBilinear
axis = 1
data_file = clad_temperature.csv
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_volumetric_eigenstrain '
'axial_relocation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress '
'creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
layer_friction_user_object = 1DFriction_secondary
temperature = temperature
out_of_plane_pressure_function = fuel_axial_pressure
[]
[clad]
block = clad
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress '
'creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
layer_friction_user_object = 1DFriction_primary
temperature = temperature
out_of_plane_pressure_function = clad_axial_pressure
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 166842000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 166842000
refab_pressure = 11e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[clad_temp]
type = FunctionDirichletBC
function = clad_surface_temperature
variable = temperature
boundary = 2
[]
[]
[UserObjects]
# Fuel dispersal
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 10
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
# We could have two element UOs to obtain interface stress
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.0265
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.0265
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
# Axial relocation object is created by axial relocation action
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.0095 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
[fuel_dispersal]
type = UO2Dispersal
block = fuel
axial_relocation_object = axial_relocation
layered_average_burnup = layered_average_burnup
layered_average_hoop_strain = layered_average_hoop_strain
dispersal_model = ONE_MM_TWO_PERCENT_STRAIN
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[]
##
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
gap_thickness_threshold = 0.00005
[]
[]
[Postprocessors]
[volume_fuel_dispersed]
type = LayeredElementIntegralMaterialProperty
block = fuel
mat_prop = dispersed
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
[]
[mass_fuel_dispersed]
type = ParsedPostprocessor
pp_names = volume_fuel_dispersed
expression = '10431 * volume_fuel_dispersed'
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
n_startup_steps = 1
end_time = 166843509.6
dtmax = 20
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = fuel
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = fuel
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[VectorPostprocessors]
[cladding_outer]
type = NodalValueSampler
boundary = 5
variable = disp_x
sort_by = y
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
layered = true
fuel_pin_geometry = fuel_pin_geometry
fuel_pellet_blocks = 'fuel'
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[checkpoint]
type = Checkpoint
num_files = 2
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(examples/2D-RZ_rodlet_10pellets/smeared_cracking/SmearedCracking.i)
# This model is a higher order, smeared 10 pellet fuel stack (pellet).
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 10
pellet_height = 0.01186
pellet_outer_radius = 4.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 2.6e-2
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e08'
y = '0 2.5e4 2.5e04'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_4c/case_4c_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
[GlobalParams]
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
use_displaced_mesh = false
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.5e-4 2.5e-4 3.5e-4 3.5e-4 3.9e-4 4.25e-4'
mesh_density = '12 0 20 0 16 16'
block_names = 'fuel buffer IPyC SiC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1273.0
[]
[]
[Functions]
[eigenstrain]
type = ParsedFunction
expression = '-0.005*t'
[]
[k_function]
type = ParsedFunction
expression = '2.715e-29'
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
initial_condition = 0.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC]
block = IPyC
strain = small
incremental = true
eigenstrain_names = ipyc_eigenstrain
[]
[rest]
block = 'fuel buffer SiC'
strain = small
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = hydrostatic
execute_on = timestep_end
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1273.0
[]
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[interior_pressure_x]
type = Pressure
variable = disp_x
boundary = IPyC_inner_boundary
factor = 25e6
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 3.75e17 # n/m^2-sec
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[IPyC_stress]
type = PyCCreep
block = IPyC
k = k_function
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
[]
[IPyC_eigenstrain]
type = PyCIrradiationEigenstrain
radial_eigenstrain_function = eigenstrain
tangential_eigenstrain_function = eigenstrain
eigenstrain_name = ipyc_eigenstrain
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10800.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 1
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 950
block = buffer
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IPyC_temperature]
type = HeatConductionMaterial
block = IPyC
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0
block = IPyC
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 8e7
dt = 1.0
dtmax = 5e6
dtmin = 1.0e4
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[min_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
value_type = min
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[min_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
value_type = min
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar/2D_discrete_finiteStrain_mortar.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
family = LAGRANGE
order = FIRST
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = ../fine10_rz.e
type = FileMeshGenerator
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
# Define auxilary variables
[pid]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = 1e+11
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[pidaux]
type = ProcessorIDAux
variable = pid
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
burnup_relocation_stop = 0.03
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-4
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[contact_evolution]
type = NodalVariableValue
variable = mechanical_normal_lm
nodeid = 4533
[]
[temp_evolution]
type = NodalVariableValue
variable = temperature
nodeid = 4533
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
#[centerline_temp]
# type = SideAverageValue
# boundary = 12
# variable = temp
# execute_on = linear
#[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[temperature_post]
type = NodalValueSampler
variable = temperature
boundary = '10'
sort_by = y
[]
[contact_post]
type = NodalValueSampler
variable = mechanical_normal_lm
boundary = '10'
sort_by = y
[]
[disp_x]
type = NodalValueSampler
variable = disp_x
boundary = '10'
sort_by = y
[]
[disp_y]
type = NodalValueSampler
variable = disp_y
boundary = '10'
sort_by = y
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part1.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.021861442
pellet_height = 0.265388558
pellet_quantity = 1
clad_bot_gap_height = 0.01275
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 295.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 166755600 166842000'
y = '0.006537 1 1 0.006537'
scale_factor = 15.5e6
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 166842000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 166842000
refab_pressure = 11e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.0095 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = BoundingValueElementDamper
min_value = 290.0
max_value = 3000.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -10
n_startup_steps = 1
end_time = 166842000
dtmax = 1e6
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[checkpoint]
type = Checkpoint
num_files = 2
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/gas_only.i)
#
# Test of fission product swelling - gas only (1000K)
#
# With a burnup of 0.001725, the volumetric strain should be 0.0001.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'swelling'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
density_name = 'reg_density'
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.001725'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[gas_swell]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = ADRankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
initial_fuel_density = 10430.0
include_gas_swelling = true
include_solid_swelling = false
include_densification = false
eigenstrain_name = swelling
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = ADStrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10430.0
[]
[converter]
type = MaterialADConverter
ad_props_in = 'density'
reg_props_out = 'reg_density'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = InternalVolume
boundary = 15
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temp'
file_base = gas_only_out
[]
(test/tests/standard_lwr_outputs_action/pellet_only_ad.i)
initial_fuel_density = 10431.0
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
density = ${initial_fuel_density}
energy_per_fission = 3.20435313e-11
temperature = temp
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = pellet_only.e
[]
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100 1e8'
y = '0 20000 20000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = fuel_pellet
add_variables = true
strain = FINITE
eigenstrain_names = fuel_thermal_strain
decomposition_method = EigenSolution
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = fuel_pellet
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
RPF = RPF
[]
[]
[BCs]
[fuel_wall_temp]
type = ADDirichletBC
preset = false
variable = temp
boundary = '10'
value = 673
[]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_elasticity_tensor]
type = ADUO2ElasticityTensor
block = fuel_pellet
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
block = fuel_pellet
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = fuel_pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = ADStrainAdjustedDensity
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = ADUO2Sifgrs
temperature = temp
burnup_function = burnup
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_abs_tol = 1e-10
dtmax = 200
dtmin = 200
end_time = 200
[]
[StandardLWRFuelRodOutputs]
temperature = temp
rod_component = fuel
fuel_pellet_blocks = fuel_pellet
use_automatic_differentiation = true
[]
[Outputs]
perf_graph = true
exodus = false
color = false
csv = true
[]
(test/tests/sifgrs/uo2/ad_swelling_porosity.i)
# This test is for the fuel swelling and porosity computation in the Sifgrs fission gas behavior model for UO2.
# As complementary to the fission gas release process, the fission gas swelling is related to gas retention in the fuel in the form of bubbles. Through a direct description of the gas bubble development, the fission gas swelling and release are modeled as inherently coupled processes, on a physical basis. Only the fission gas swelling due to grain-face bubbles is considered.
# In a comprehensive treatment of fission gas release and fuel swelling, Sifgrs also incorporates empirical models for the swelling due to solid fission products and the fuel densification.
# Moreover, the different contributions to fuel porosity, namely, those due to fabrication pores, gas bubbles (thus associated with fission gas swelling) , and sintering (densification), are computed consistently with the swelling calculations. Then, the fuel total porosity in each mesh location can be tracked (auxkernel PorosityAuxUO2), and considered in the computation of other relevant material properties like the fuel thermal conductivity (material model UO2Thermal).
# This test aims at demonstrating the above model capabilities. The considered case involves a single-element cubic domain, constant temperature (1400 K) and fission rate (1e19 f/(m**3s)), and a irradiation time of 1e8 s. The Sifgrs model is adopted for calculating the fission gas release and fuel swelling. Starting from a typical as-fabricated value of 5%, the fuel porosity evolves consistently with the swelling. The fuel thermal conductivity is calculated as coupled with porosity, which allows taking into account the conductivity degradation due to progressive increase of gaseous porosity (see also the attached file regression_tests_sifgrs.xlsx).
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube_111.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400.'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[temp]
initial_condition = 1400.
[]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.05
[]
[density]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_sl]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_dn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
[]
[fabrication_porosity]
order = CONSTANT
family = MONOMIAL
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
[]
[sintering_porosity]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
use_automatic_differentiation = true
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_volumetric_strain'
volumetric_locking_correction = false
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[]
[AuxKernels]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[brnp]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[por]
type = ADPorosityAuxUO2
variable = porosity
execute_on = 'initial linear'
[]
[rho]
type = ADMaterialRealAux
variable = density
property = density
execute_on = 'initial linear'
[]
[dvv0bd]
type = ADMaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[dvv0sl]
type = ADMaterialRealAux
variable = deltav_v0_sl
property = solid_swelling
[]
[dvv0dn]
type = ADMaterialRealAux
variable = deltav_v0_dn
property = densification
[]
[dvv0swe]
type = ADMaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
[]
[fabpor]
type = ADMaterialRealAux
variable = fabrication_porosity
property = fabrication_porosity
execute_on = 'initial linear'
[]
[gaspor]
type = ADMaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[sinpor]
type = ADMaterialRealAux
variable = sintering_porosity
property = sintering_porosity
[]
[thcond]
type = ADMaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = ADDirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = ADDirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[z_disp]
type = ADDirichletBC
variable = disp_z
value = 0
boundary = 3
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = temp
burnup = burnup
initial_porosity = 0.05
porosity = porosity
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
[]
[fuel_volumetric_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
temperature = temp
burnup = burnup
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[density]
type = ADStrainAdjustedDensity
strain_free_density = 10417.0
[]
[fission_gas_release_and_swelling]
type = ADUO2Sifgrs
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.05
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1.e-04
nl_abs_tol = 1.e-05
nl_rel_tol = 1.e-05
start_time = 0.
num_steps = 100
dt = 1.e+06
end_time = 1.e+08
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(examples/multiapp/pin1.i)
## In this example the multiapp system is called to run another BISON simulation.
## (input1.i calls input2.i) An application of this might be multiple fuel pins
## in an assembly. This example also demonstrates the internal mesh maker.
initial_fuel_density = 10200
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
a_lower = 0.06951
a_upper = 3.72711
initial_porosity = 0.04
[]
# ==================================================== #
# Mesh (and Geometry, internally-meshed)
# ==================================================== #
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.0005
pellet_outer_radius = 0.0041
clad_bot_gap_height = 0.00152
clad_top_gap_height = 0.16
pellet_quantity = 1
pellet_height = 3.6576
clad_gap_width = 8.0e-05
bottom_clad_height = 0.0167
top_clad_height = 0.0167
nx_p = 6 # number of radial elements in the fuel
ny_p = 48 # number of axial elements in the fuel
nx_c = 3 # number of elements in the clad thickness
ny_c = 48 # number of elements in the axially in the clad
ny_cu = 1
ny_cl = 1
intervals = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212'
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 10
patch_update_strategy = auto
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 493
[]
# ==================================================== #
# Dimensions and Primary Variables
# ==================================================== #
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 3.000000e+02
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
# ==================================================== #
# Auxiliary Variables
# ==================================================== #
[AuxVariables]
# ================================================== #
# Nodal Quantities
# ================================================== #
[htcl]
initial_condition = 500.0
[]
[htcv]
initial_condition = 0.0
[]
[Tl]
initial_condition = 565.0
[]
[Tv]
initial_condition = 565.0
[]
[burnup]
block = 3
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.240000e-06
[]
# ================================================== #
# Constant Monomial Quantities (Non-Mechanics)
# ================================================== #
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[axial_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[axial_burnup]
order = CONSTANT
family = MONOMIAL
[]
[axial_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.04
[]
[]
# ==================================================== #
# Time- and Space-Dependent Source and BCs
# ==================================================== #
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
x = '-100 0 5000'
y = '0 0 25000'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_temperature]
type = PiecewiseLinear
x = '-100 0'
y = '293 565'
axis = y
[]
[coolant_pressure_ramp]
# used in coolantPressure BC
type = PiecewiseLinear
scale_factor = 1
x = '0 10000.0'
y = '0 1.0'
[]
[]
# ==================================================== #
# Burnup Equation Set
# ==================================================== #
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '3.100e-02 9.690e-01'
RPF = RPF
[]
[]
# ==================================================== #
# Primary Kernels used in Heat Transfer
# ==================================================== #
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
extra_vector_tags = 'ref'
block = 3
[]
[]
[AuxKernels]
# ================================================== #
# Pre-Defined Types
# ================================================== #
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
factor = 1.27e+14 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = linear
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
# ================================================== #
# Other General Types
# ================================================== #
[axial_burnup]
type = SpatialUserObjectAux
block = 3
variable = axial_burnup
user_object = axial_burnup
execute_on = timestep_begin
[]
[axial_temperature]
type = SpatialUserObjectAux
block = 3
variable = axial_temperature
user_object = axial_temperature
execute_on = timestep_begin
[]
[]
# ==================================================== #
# Mechanical and Thermal Contact
# ==================================================== #
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
normal_smoothing_distance = 0.1
model = frictionless
formulation = Kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.200000e+00
roughness_primary = 1.8e-06
roughness_secondary = 8e-07
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 0.0001
normal_smoothing_distance = 0.1
order = FIRST
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[convective_clad_surface_bottom]
type = ConvectiveFluxBC
boundary = '1 2 3'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 565.0
final = 585.0
duration = 1.0e4 #duration of initial power ramp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.55132e+07
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
# ==================================================== #
# Specification of Material Properties
# ==================================================== #
[Materials]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
diameter = 0.008192
diametral_gap =0.000168
# Average burnup at which fuel comes into contact with clad at 25kW/m
burnup_relocation_stop = 0.0315
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10200.0
eigenstrain_name = fuel_volumetric_strain
total_densification = 0.01
[]
[fission_gas_release]
type = UO2Sifgrs
axial_power_profile = axial_peaking_factors
block = 3
burnup = burnup
fission_rate = fission_rate
hydrostatic_stress = hydrostatic_stress
grain_radius = grain_radius
pellet_brittle_zone = pbz
pellet_id = pellet_id
rod_ave_lin_pow = linear_heat_rate_profile
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 7833
[]
[]
# ==================================================== #
# User Objects for Output Processing
# ==================================================== #
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.0041
number_pellets = 1
execute_on = linear
[]
[averagefissionrate]
type = LayeredAverage
block = 3
variable = fission_rate
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[average_temp]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[averagebu]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[casl_average_fission_rate]
variable = fission_rate
type = LayeredAverage
block = 3
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[surface_temp]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[axial_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[integral_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[average]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_surface_temperature]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[rod_avg_fast_fluence]
type = LayeredSideAverage
boundary = 2
variable = fast_neutron_fluence
direction = y
num_layers = 1
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[casl_clad_surface_heat_flux]
type = LayeredSideDiffusiveFluxAverage
variable = temp
boundary = 2
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
diffusivity = thermal_conductivity
execute_on = timestep_begin
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 293
[]
[]
# ==================================================== #
# Solver Options
# ==================================================== #
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
verbose = true
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
# ================================================== #
# Time Step Control
# ================================================== #
start_time = -100
end_time = 5e6
dtmin = 0.1
dtmax = 1e6
dt = 10
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 1000
time_t = '0 1.0e4 53200 1.0e5'
time_dt = '1.0e3 1.0e3 1.0e3 1.0e5'
[]
[]
[Postprocessors]
# ================================================== #
# Required for Fission Gas Release Models
# ================================================== #
[ave_temp_interior]
# used to compute temperature of plenum
type = SideAverageValue
boundary = 9
variable = temp
outputs = exodus
execute_on = 'initial linear'
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[gas_volume]
type = InternalVolume
boundary = 9
outputs = exodus
execute_on = 'initial linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# ==================================================== #
# Location and format of output
# ==================================================== #
[Outputs]
perf_graph = true
exodus = true
file_base = pin1_output
time_step_interval = 1
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
positions = '10 0 0'
input_files = 'pin2.i'
[]
[]
(test/tests/thermalUO2/ad_thermalUO2_jac_test.i)
[Mesh]
[mesh]
type = FileMeshGenerator
file = pelletfine1_rz.e
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 300.0 # set initial T to ambient
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
block = 2
[]
[burnup]
order = FIRST
family = LAGRANGE
block = 2
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
block = 2
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
block = 2
value = 1.183e19 # corrected average power to 200 W/cm
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
block = 2
execute_on = linear
[]
[burnup]
type = ConstantAux
variable = burnup
value = 0.001
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[ConstantT]
type = ADDirichletBC
boundary = 10
variable = T
value = 500
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
temperature = T
burnup = burnup
initial_porosity = 0.015
[]
[density]
type = ParsedMaterial
block = 2
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '100 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
l_max_its = 60
nl_max_its = 15
nl_rel_tol = 1e-9
nl_abs_tol = 1e-10
l_tol = 1e-5
[]
[Outputs]
csv = true
[]
(workshop/bison_example/Discrete.i)
# This model is a higher order, discrete 10 pellet fuel stack (pellet_type_1).
[GlobalParams]
density = 10431.0
initial_porosity = 0.05
order = SECOND
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'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = discrete.e
type = FileMeshGenerator
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain
fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx
stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain
clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx
stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775
RPF = RPF
# N235 = N235
# N236 = N236
# N238 = N238
# N239 = N239
# N240 = N240
# N241 = N241
# N242 = N242
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
diameter = 0.0082
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 2369
[]
[fuel_surface_mid_temp]
type = NodalVariableValue
variable = temp
nodeid = 2887
[]
[fuel_surface_ridge_temp]
type = NodalVariableValue
variable = temp
nodeid = 2862
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 7322
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 2887
[]
[penetration_ridge]
type = NodalVariableValue
variable = penetration
nodeid = 2862
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/Riso_Base_sub.i)
# This is a partial input file base with information/features common to several assessments cases for Riso
# This file is a sub-base file and contains blocks that are common to all the Riso cases except Riso_II5_action.i.
# NOTE: This file will NOT run on its own, it requires the Riso_Base.i and a Riso_XX.i file to run, with XX specifying the case to be run.
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = ${blocks_fuel}
initial_condition = ${initial_grain_radius}
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = ${blocks_fuel}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = ${blocks_fuel}
strain = FINITE
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
strain = FINITE
temperature = temperature
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = ${blocks_all}
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
block = ${blocks_all}
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = ${blocks_fuel}
[]
[]
[Burnup]
[burnup]
block = ${blocks_fuel}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = ${num_radial_burnup}
bias = ${bias_radial_burnup}
num_axial = ${num_axial_burnup}
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = ${blocks_fuel}
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[pelletid]
type = PelletIdAux
block = ${blocks_fuel}
variable = pellet_id
a_lower = ${a_lower}
a_upper = ${a_upper}
number_pellets = ${number_pellets}
execute_on = timestep_begin
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = ${blocks_fuel}
temperature = temperature
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = ${blocks_fuel}
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = ${blocks_fuel}
temperature = temperature
[]
[fuel_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = ${blocks_fuel}
temperature = temperature
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = ${blocks_fuel}
burnup_function = burnup
temperature = temperature
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = ${blocks_fuel}
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
burnup_relocation_stop = ${burnup_relocation_stop}
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = ${blocks_fuel}
grain_radius = grain_radius
burnup_function = burnup
temperature = temperature
hydrostatic_stress = hydrostatic_stress
ath_model = true
rod_ave_lin_pow = power_history
gbs_model = true
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
pellet_id = pellet_id
pellet_brittle_zone = pbz
[]
[fuel_density]
type = StrainAdjustedDensity
block = ${blocks_fuel}
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = clad_creep
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = ${stress_free_temperature}
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_growth_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = ${blocks_fuel}
pellet_id = pellet_id
temperature = temperature
pellet_radius = ${fuel_outer_radius}
a_lower = ${a_lower}
a_upper = ${a_upper}
number_pellets = ${number_pellets}
execute_on = linear
[]
[]
(examples/3D_rodlet_3pellets/discrete_half_symm/3d_3pellets.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = DiscreteThreePellets3D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
penalty = 1e14
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1004
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 3.0e7
automatic_scaling = true
compute_scaling_once = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'plenum_pressure interior_temp gas_volume'
[]
[]
(assessment/LWR/validation/FUMEXII_Regate/analysis/discrete/Regate_discrete.i)
initial_fuel_density = 10360
[GlobalParams]
density = ${initial_fuel_density}
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = regate_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.675e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = regate_linear_power.csv
scale_factor = 1
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = regate_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 98406792 98407164 98407291 98407445 99578736 99580326'
y = '0.00654 1 1 0.00654 0.00654 0.839 0.839 0.00654'
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = regate_cladding_temperature.csv
scale_factor = 1
format = columns
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
data_file = regate_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_zz
creep_strain_xx elastic_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
factor = 1
function = fast_neutron_flux_function
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.4444
fuel_inner_radius = 0
fuel_outer_radius = 0.004096
fuel_volume_ratio = 1
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04487 0.95513 0 0 0 0'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_wall_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.5e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10360
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
initial_porosity = 0.05246
block = 3
temperature = temp
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.008192
diametral_gap =1.68e-5
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.015
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[plasticity]
type = IsotropicPlasticityStressUpdate
block = 1
yield_stress = 500e6
hardening_constant = 2.5e9
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 99580326
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
sync_times = '98407291'
[console]
type = Console
max_rows = 30
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/swelling.i)
# @Requirement F2.20
# Test of combined swelling and densification (1000K)
#
# With a burnup of 0.05, the volumetric strain should be 0.0193.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'fuelthermal_strain swell'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
density_name = 'reg_density'
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.05'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[solid_swell]
type = ADMaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[gas_swell]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[densification]
type = ADMaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_swelling_strain]
type = ADMaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
eigenstrain_name = swell
initial_fuel_density = 10430.0
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = '1 2 3 4 5 6 7'
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1000.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[density]
type = ADStrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10430.0
[]
[converter]
type = MaterialADConverter
ad_props_in = 'density'
reg_props_out = 'reg_density'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
[]
[densification]
type = ElementAverageValue
variable = densification
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
[]
[]
[Outputs]
exodus = true
[]
(test/tests/standard_lwr_outputs_action/mini_complete_rod_1D.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
[mesh]
type = Layered1DMeshGenerator
slices_per_block = 2
fuel_height = 0.1
plenum_height = 0.02
pellet_mesh_density = coarse
clad_mesh_density = coarse
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = mesh
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 3
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 2
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[]
[Variables]
[temperature]
initial_condition = 580.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0.000000 10800'
y = '0.000000 16404.200000'
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800'
z = '1.0 1.0 1.0 1.0'
axis = 1
scale_factor = 1
# type = ParsedFunction
# expression = '1.0'
[]
[pressure_ramp]
type = PiecewiseLinear
scale_factor = 1
x = '0 10800.0'
y = '0.00651 1.0'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.5e6
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]
block = fuel
add_variables = true
strain = finite
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = mesh
[]
[clad]
block = clad
add_variables = true
strain = finite
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = mesh
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 6
num_axial = 2
a_lower = 0.00351
a_upper = 0.02723
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
output_initial_moles = initial_moles
temperature = plenum_temperature ## generated by the standard outputs action
volume = plenum_volume ## generated by the standard outputs action
material_input = fission_gas_released ## generated by the standard outputs action
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
gbs_model = false
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
snesmf_reuse_base = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = 0
end_time = 10
dtmax = 10
dtmin = 10
[]
[StandardLWRFuelRodOutputs]
fuel_pin_geometry = pin_geometry
layered = true
[]
[Outputs]
exodus = false
color = false
csv = true
perf_graph = true
[]
(examples/accident_tolerant_fuel/uo2_coated_zircaloy/uo2_coated_zircaloy.i)
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.026
pellet_height = 0.1186
pellet_quantity = 1
clad_bot_gap_height = 0
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
coating_thickness = 40e-6
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 3
ny_c = 40
nx_p = 11
ny_p = 40
nx_coating = 2
elem_type = QUAD8
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 293.0
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e4 1e8'
y = '0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '6.537e-3 1 1'
scale_factor = 15.5e6
[]
[mass_flux_func]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '3800. 3800. 3800.'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[coating]
block = coating
strain = FINITE
eigenstrain_names = 'coating_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_strain_hoop]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
scalar_type = HoopStress
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
normal_smoothing_distance = 0.1
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = pressure_ramp
inlet_massflux = mass_flux_func
rod_diameter = 9.54e-3
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
# Fuel
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
burnup_function = burnup
temperature = temperature
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
# Clad
[clad_thermal]
type = ZryThermal
temperature = temperature
block = clad
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_plasticity'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-4
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_plasticity]
type = ZryPlasticityUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6511.0
[]
# Coating
[coat_thermal]
type = ChromiumThermal
block = coating
temperature = temperature
[]
[coating_elasticity_tensor]
type = ChromiumElasticityTensor
temperature = temperature
block = coating
[]
[coat_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'coat_creep coat_plasticity'
block = coating
[]
[coat_creep]
type = ChromiumCreepUpdate
temperature = temperature
block = coating
[]
[coat_plasticity]
type = ChromiumPlasticityUpdate
temperature = temperature
block = coating
fast_neutron_fluence = 0.0
hardening_constant = 2e9
[]
[coat_thermal_expansion]
type = ChromiumThermalExpansionEigenstrain
block = coating
temperature = temperature
stress_free_temperature = 293.0
eigenstrain_name = coating_thermal_eigenstrain
[]
[density_coat]
type = StrainAdjustedDensity
block = coating
strain_free_density = 7190.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200.0
min_value = 293.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 5e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 5e5
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2.0
timestep_limiting_postprocessor = material_timestep
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[oxide_thickness]
type = ElementExtremeValue
block = clad
variable = oxide_thickness
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
csv = true
print_linear_residuals = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1_1p5d_fr_ffrd.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 80e-6
plenum_height = 0.0393576
pellet_outer_radius = 3.92e-3
clad_thickness = 0.57e-3
fuel_height = 0.2606424
# nx_c = 2
# nx_p = 11
elem_type = EDGE3
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 295.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
[tangential_contact_pressure_aux]
block = fuel
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 86400 47386400 47472800 47559200 47645600 94945600 95032000'
y = '0.0065371 1 1 1 1 1 1 1 0.0065371'
scale_factor = 15.5e6
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_volumetric_eigenstrain axial_relocation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
out_of_plane_pressure_function = fuel_axial_pressure
layer_friction_user_object = 1DFriction_secondary
[]
[clad]
block = clad
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
out_of_plane_pressure_function = clad_axial_pressure
layer_friction_user_object = 1DFriction_primary
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished fuels (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = 'fission_gas_released he_prod'
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 95032000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = 'fission_gas_released he_prod'
output = plenum_pressure
refab_time = 95032000
refab_pressure = 8.2e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[]
[UserObjects]
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 10
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
# [fuel_pin_geometry]
# type = Layered1DFuelPinGeometry
# mesh_generator = layered1D_mesh
# []
[terminator]
type = Terminator
expression = 'burst > 0'
[]
# We could have two element UOs to obtain interface stress
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.02606424
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.24761028
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.02606424
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.00914 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
# [uo2_pulverization]
# type = UO2Pulverization
# block = fuel
# layered_average_contact_pressure = contact_pressure
# temperature = temperature
# burnup_function = burnup
# output_properties = pulverized
# outputs = all
# []
[fuel_dispersal]
type = UO2Dispersal
block = fuel
axial_relocation_object = axial_relocation
layered_average_burnup = layered_average_burnup
layered_average_hoop_strain = layered_average_hoop_strain
dispersal_model = ONE_MM_TWO_PERCENT_STRAIN
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
# [fuel_relocation]
# type = UO2RelocationEigenstrain
# block = fuel
# burnup_function = burnup
# fuel_pin_geometry = fuel_pin_geometry
# rod_ave_lin_pow = power_history
# axial_power_profile = axial_peaking_factors
# burnup_relocation_stop = 0.024
# relocation_activation1 = 5000
# relocation_model = ESCORE_modified
# eigenstrain_name = fuel_relocation_eigenstrain
# []
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[]
[VectorPostprocessors]
[cladding_outer]
type = NodalValueSampler
boundary = 5
variable = disp_x
sort_by = y
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
# CHANGE
gap_thickness_threshold = 0.000050
[]
[]
[Postprocessors]
[volume_fuel_dispersed]
type = LayeredElementIntegralMaterialProperty
block = fuel
mat_prop = dispersed
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
[]
[mass_fuel_dispersed]
type = ParsedPostprocessor
pp_names = volume_fuel_dispersed
expression = '10431 * volume_fuel_dispersed'
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -10
n_startup_steps = 1
end_time = 95032000
dtmax = 1e6
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = fuel
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[he_prod]
type = IFBAHeProduction
b10_load = 9.27165354e-5
b10_enrich = 0.5
burnup = average_burnup
zrb2_thick = 10e-6
fuel_out_rad = 9.32e-3
ifba_len = 0.3
u235_enrich = 0.05
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = fuel
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
layered = true
fuel_pin_geometry = fuel_pin_geometry
fuel_pellet_blocks = 'fuel'
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[checkpoint]
type = Checkpoint
num_files = 2
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(assessment/LWR/validation/IFA_535/analysis/rod_810/IFA_535_rod_810.i)
initial_fuel_density = 10398.06
[GlobalParams]
density = ${initial_fuel_density} #Assuming 10980 as the theoretical density
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
patch_size = 20 # 50
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ifa535_rod810.e
[]
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1'
initial_condition = 9.36e-6 # 2D grain radius 6um
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ifa535_810_power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ifa535_810_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 217720944 217722744 217724544 217742544 224388540 224388576'
y = ' 0.0303 1 1 0.0303 0.0303 1 1 0.0303'
[]
[flux] # reads and interpolates input data defining fast neutron flux
type = PiecewiseLinear
data_file = ifa535_810_fast_flux.csv
format = columns
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = ifa535_810_clad_bc.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system (in all cases here, the axisymmetric (RZ) version is specified)
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1' # fission rate applied to the fuel (block 2) only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.48724
a_lower = 0.01924
fuel_inner_radius = 0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1
RPF = RPF
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
axial_power_profile = axial_peaking_factors
function = flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 'clad'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_secondary = 0.81e-6
roughness_primary = 1.0e-6
roughness_coef = 3.2
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 226498428
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 3.2e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.1e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = 217722744
refab_pressure = 3.2e6
refab_temperature = 449.05
refab_volume = 9.6e-6
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
initial_fuel_density = 10398.06
eigenstrain_name = fuel_volumetric_strain
[]
[density_clad]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet_type_1'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
diameter = 0.01054 #Fuel pellet diameter in m
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.44e-4
burnup_relocation_stop = 0.029
relocation_activation1 = 5000 #initial relocation activation power in W/m
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
# controls for linear iterations
l_max_its = 60
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# time control
start_time = -100
end_time = 224388576
dtmax = 5e5
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
force_step_every_function_point = true
timestep_limiting_function = power_profile
optimal_iterations = 25
iteration_window = 6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 'pellet_type_1'
[]
[clad_elong]
type = NodalVariableValue
variable = disp_y
nodeid = 2359 #Global node ID 9739
[]
[input_rod_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
sync_times = 5556726
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ022/TSQ022.i)
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = tsq022_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[grain_radius]
block = pellet_type_1
initial_condition = 8.892e-6 # ((11.1+10.9+12.2)/3)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = TSQ022_alhr.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = TSQ022_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 141789874 141793474' # -100 @ 101326 Pa, 0 to 141789874 @ 15.517 MPa, 141793474 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ022_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ022_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
type = PiecewiseBilinear
data_file = TSQ022_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_yy creep_strain_xy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
a_lower = 0.00324
a_upper = 3.81705
fuel_outer_radius = 0.0041275
fuel_inner_radius = 0.0011684
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10
initial_moles = initial_moles
primary = 5
gas_released = fission_gas_released
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.517e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.008255
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =0.0001778
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 141793474 #141789874+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81381 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
nodeid = 30330 #coords (0.0011684, 2.10133)
variable = temp
execute_on = 'initial timestep_end'
[]
[FCT_slice4]
type = NodalVariableValue
nodeid = 37085 #coords (0.0011684, 1.71896)
variable = temp
execute_on = 'initial timestep_end'
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = pellet_type_1
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[gap_slice6]
type = NodalVariableValue
variable = penetration
nodeid = 23579 #coords (0.0041275, 2.48172)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 30299 #coords (0.0041275, 2.10133)
[]
[gap_slice4]
type = NodalVariableValue
variable = penetration
nodeid = 37054 #coords (0.0041275, 1.71896)
[]
[contact_pressure_slice6]
type = NodalVariableValue
variable = contact_pressure
nodeid = 23579 #coords (0.0041275, 2.48172)
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 30299 #coords (0.0041275, 2.10133)
[]
[contact_pressure_slice4]
type = NodalVariableValue
variable = contact_pressure
nodeid = 37054 #coords (0.0041275, 1.71896)
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet_type_1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part1_1p5d_fr_frd.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.57e-3
fuel_height = 0.265388558
plenum_height = 0.034861442
elem_type = EDGE3
nx_p = 11
pellet_mesh_density = customize
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 295.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
# Define auxilary variables
[tangential_contact_pressure_aux]
block = fuel
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 166755600 166842000'
y = '0.006537 1 1 0.006537'
scale_factor = 15.5e6
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_volumetric_eigenstrain axial_relocation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
layer_friction_user_object = 1DFriction_secondary
out_of_plane_pressure_function = fuel_axial_pressure
[]
[clad]
block = clad
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
layer_friction_user_object = 1DFriction_primary
out_of_plane_pressure_function = clad_axial_pressure
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 166842000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 166842000
refab_pressure = 11e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[]
[UserObjects]
# Fuel dispersal
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 10
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
# We could have two element UOs to obtain interface stress
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.0265
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.0265
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.0095 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
[fuel_dispersal]
type = UO2Dispersal
block = fuel
axial_relocation_object = axial_relocation
layered_average_burnup = layered_average_burnup
layered_average_hoop_strain = layered_average_hoop_strain
dispersal_model = ONE_MM_TWO_PERCENT_STRAIN
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = BoundingValueElementDamper
min_value = 290.0
max_value = 3000.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
# CHANGE
gap_thickness_threshold = 0.000050
[]
[]
[Postprocessors]
[volume_fuel_dispersed]
type = LayeredElementIntegralMaterialProperty
block = fuel
mat_prop = dispersed
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
[]
[mass_fuel_dispersed]
type = ParsedPostprocessor
pp_names = volume_fuel_dispersed
expression = '10431 * volume_fuel_dispersed'
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -10
n_startup_steps = 1
end_time = 166842000
dtmax = 1e6
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = fuel
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = fuel
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[VectorPostprocessors]
[cladding_outer]
type = NodalValueSampler
boundary = 5
variable = disp_x
sort_by = y
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
layered = true
fuel_pin_geometry = fuel_pin_geometry
fuel_pellet_blocks = 'fuel'
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[checkpoint]
type = Checkpoint
num_files = 2
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(test/tests/uo2_thermal/Toptan/ad_test.i)
# This test case is prepared to test the thermal conductivity using the Toptan model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the Toptan thermal conductivity model.
# The BISON predictions (BISON_k for UO2, BISON_Gd_k for UO2 with a 2% gadolinia content)
# compared to the expected results (expected_k for UO2, expected_Gd_k for UO2 with a 2% gadolinia content)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error expected_Gd_k BISON_Gd_k percent_error_Gd
# 6.017528800 6.017528800 3.22E-13 5.259445073 5.259445073 2.22E-13
# 5.728214102 5.728214102 7.77E-14 5.037348551 5.037348551 1.55E-13
# 5.478510749 5.478510749 -3.11E-13 4.843478155 4.843478155 6.44E-13
# 5.250175958 5.250175958 1.22E-13 4.664395811 4.664395811 -6.66E-14
# 5.040313799 5.040313799 -4.22E-13 4.498261518 4.498261518 -8.66E-13
# 6.571905059 6.571905059 -6.88E-13 9.136048213 9.136048213 -8.88E-14
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = ADBurnupAux
variable = burnup
density = 10431.0 # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = ADFunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = TOPTAN
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ADParsedMaterial
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/axial_relocation/crumbled_thermal_conductivity.i)
# The purpose of this test is to verify that the thermal conductivity of the fuel
# is properly scaled in regions that have crumbled due to axial relocation. In this
# test at the end of the simulation the middle layer of the 5 (indexed as layer 2)
# has been found to have crumbled (accommodated additional mass). Using the NFIR
# thermal conductivity as the underlying model for the thermal conductivity of the
# fuel which has been verified elsewhere the scaling factor for crumbled fuel is
# calculated.
#
# A constant burnup of 0.07 % FIMA and a constant temperature of 1200 K is applied
# to the fuel. These conditions result in no pulverization of the fuel. For
# simplicity the packing fraction of both fragments and pulvers are set to 0.828912
# To be consistent with the other tests in this directory. The use of a constant
# burnup is to ensure that the thermal conductivity is constant radially. Before
# crumbling the thermal conductivity calculated by the NFIR model is 2.023185.
#
# By examining the thermal_conductivity AuxVariable, and looking at the thermal
# conductivity of the middle layer it is listed as 1.588923 W/m-K. This value
# is obtained by an analytical calculation for the same conditions in the Excel
# spreadsheet included in this directory.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = disp_x
temperature = temperature
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
fuel_height = 0.5
include_plenum = false
nx_p = 10
clad_gap_width = 0.0
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 1200
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[pulverized]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_burnup]
order = CONSTANT
family = MONOMIAL
[]
[layered_mass_fraction]
order = CONSTANT
family = MONOMIAL
[]
[inner_clad_radius]
order = FIRST
family = LAGRANGE
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[gas_conductivity]
order = FIRST
family = LAGRANGE
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = '0.07'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '15000 15000'
[]
[clad_displacement_function]
type = ParsedFunction
expression = '2.0e-5 * t * sin(pi * y / 0.5)'
[]
[gas_conductivity_function]
type = ConstantFunction
value = 0.15
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[gps_fuel]
add_scalar_variables = true
add_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = fuel
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[gps_clad]
add_scalar_variables = true
add_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = clad
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[pulverized]
type = MaterialRealAux
block = fuel
variable = pulverized
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
variable = layered_average_contact_pressure
execute_on = timestep_end
block = fuel
user_object = layered_average_contact_pressure
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[layered_average_burnup]
type = SpatialUserObjectAux
variable = layered_average_burnup
execute_on = timestep_end
block = fuel
user_object = layered_average_burnup
[]
[layered_mass_fraction]
type = AxialRelocationOutputAux
variable = layered_mass_fraction
execute_on = timestep_end
block = fuel
axial_relocation_user_object = axial_relocation
output_option = MASS_FRACTION
[]
[inner_clad_radius]
type = Radius
boundary = 5
variable = inner_clad_radius
execute_on = 'initial nonlinear'
[]
[layered_maximum_clad_radius]
type = SpatialUserObjectAux
variable = layered_maximum_clad_radius
execute_on = timestep_end
block = fuel
user_object = layered_maximum_clad_radius
[]
[gas_conductivity]
type = FunctionAux
function = gas_conductivity_function
variable = gas_conductivity
execute_on = 'initial linear'
[]
[th_cond]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
block = fuel
execute_on = 'initial linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[BCs]
[temperature]
type = DirichletBC
boundary = '10 12 5 2'
variable = temperature
value = 1200
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[inner_clad_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '5'
function = clad_displacement_function
[]
[]
[Materials]
[uo2pulverization]
type = UO2Pulverization
block = fuel
burnup = burnup
layered_average_contact_pressure = layered_average_contact_pressure
temperature = temperature
[]
[fuel_thermal_crumbled]
type = UO2Thermal
Gd_content = 0.0
block = fuel
burnup = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR # NFIR k for UO2
oxy_to_metal_ratio = 2.0
temperature = temperature
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = .345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
execute_on = 'initial timestep_end'
boundary = 10
num_layers = 5
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[layered_average_burnup]
type = LayeredAverage
variable = burnup
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[layered_maximum_clad_radius]
type = LayeredNodalExtremeValue
variable = inner_clad_radius
direction = y
execute_on = 'initial timestep_end'
boundary = 5
layer_bounding_block = fuel
num_layers = 5
[]
[layered_clad_internal_volume]
type = LayeredInternalVolume
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = 0
direction = y
execute_on = 'initial timestep_end'
boundary = 5
layer_bounding_block = fuel
num_layers = 5
[]
[axial_relocation]
type = AxialRelocationUserObject
block = fuel
direction = y
num_layers = 5
layered_average_burnup = layered_average_burnup
layered_pulverized_fuel_volume = layered_pulverized_fuel_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_clad_internal_volume = layered_clad_internal_volume
max_linear_heat_generation_rate = maximum_power
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
fragment_packing_fraction = 0.828912
pulver_packing_fraction = 0.828912
[]
[]
[Postprocessors]
[rod_input_power]
type = FunctionValuePostprocessor
function = power
execute_on = timestep_end
[]
[maximum_power]
type = TimeExtremeValue
postprocessor = rod_input_power
value_type = max
execute_on = timestep_end
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 14
dt = 2
[]
[Outputs]
exodus = true
[]
(test/tests/triso_failure/triso_1d_failure.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[radial_stress]
type = RankTwoCylindricalComponent
rank_two_tensor = stress
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 0 1'
cylindrical_component = RadialStress
property_name = radial_stress
outputs = all
[]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[failure_indicator_debonding]
type = TRISODebondingFailureIndicator
boundary = IPyC_outer_boundary
bond_strength = 1e5
stress_name = radial_stress
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
SiC_failure_debonding = failure_indicator_debonding
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/radial_power_factor/radial_power_factor_u3si2.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
temperature = temp
volumetric_locking_correction = true
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false #Small strain doesn't require
[mesh]
type = FileMeshGenerator
file = 1x10.e
[]
[]
[Functions]
[ramp]
type = PiecewiseLinear
x = '0 7e7'
y = '1373.15 1473.15'
[]
[power]
type = ParsedFunction
expression = '20000'
[]
[axial_power_factor]
type = ParsedFunction
expression = '1'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1373.15
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[solid]
block = 1
strain = small
incremental = true
add_variables = true
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Burnup]
[burnup]
block = 1
order = FIRST
family = LAGRANGE
fuel_type = u3si2
rod_ave_lin_pow = power
axial_power_profile = axial_power_factor
num_radial = 11
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0
N235 = N235
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[BCs]
[uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 3
function = ramp
[]
[temp]
type = DirichletBC
variable = temp
boundary = 1
value = 1373.15
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.e-5
stress_free_temperature = 1373.15
eigenstrain_name = thermal_strain
[]
[thermal]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup
initial_porosity = 0
thermal_conductivity_model = FINK_LUCUTA
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
l_tol = 1e-5
start_time = 0.0
dt = 100000
num_steps = 700
[]
[Outputs]
time_step_interval = 20
print_linear_residuals = true
exodus = true
show = 'fission_rate burnup N235 N238 N239 N240 N241 N242 RPF'
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/gas_only.i)
#
# Test of fission product swelling - gas only (1000K)
#
# With a burnup of 0.001725, the volumetric strain should be 0.0001.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = swelling
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.001725'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[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
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
initial_fuel_density = 10430.0
include_gas_swelling = true
include_solid_swelling = false
include_densification = false
eigenstrain_name = swelling
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = InternalVolume
boundary = 15
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temp'
file_base = gas_only_out
[]
(assessment/LWR/validation/OSIRIS_H09/analysis/OSIRIS_H09.i)
initial_fuel_density = 10465.04
[GlobalParams]
density = ${initial_fuel_density} # 95.31% of TD (Assumed TD to be 10980)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = H09_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 7.0668e-6 # Using centre pellet average grain size of 9.060
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = h09_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = h09_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 102133764 102134124'
y = '0.006533 1 1 0.006533'
[]
[flux]
type = PiecewiseBilinear
data_file = h09_fast_flux.csv
scale_factor = 1
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = h09_clad_bc.csv
scale_factor = 1
axis = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00324
a_upper = 3.66362
fuel_inner_radius = 0.0
fuel_outer_radius = 0.004095
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.03249 .96751 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.1e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
initial_fuel_density = 10465.04
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 293
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00819
diametral_gap =160.e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = .029
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 102134124
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 10
linear_iteration_ratio = 100
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '3'
variable = grain_radius
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(examples/TRISO/accident_simulation/triso1D_accident.i)
# This example is 1D spherical analysis of a TRISO fuel particle. Fully coupled
# heat transfer and solid mechanics, plus diffusion of the fission product
# species cesium (Cs) are simulated. The mesh includes contact surfaces
# between the buffer and IPyC layers to facilitate a gap opening between
# these layers. These surfaces are initially in mechanical contact but
# are assumed to have no strength in tension. A coarse mesh is used to
# provide a short run time.
# The calculation simulates fuel-life in three steps. The first step is an
# irradiation period, where constant power and a fixed particle surface
# temperature (1500 K) are assumed over a lifetime of 76 Ms (2.4 yrs).
# For the second step, fuel removal and storage are simulated by setting
# the reactor power and Cs source terms to zero, reducing the particle
# surface temperature to ambient (300 K), and then holding it
# for 100 days. A third and final step simulates accident
# behavior by increasing the particle surface temperature from ambient
# to 2073 K over 2 hrs, and then holding it at this elevated temperature
# for an additional 200 hrs. At the particle outer boundary, the Cs
# concentration is held at zero and the pressure at ambient during the
# entire simulation. The particle is assumed to be stress-free at an
# initial temperature of 1500 K.
#
# Details about this simulation are given in Section 4 of the following
# article: J. D. Hales, R. L. Williamson, S. R. Novascone, D. M. Perez,
# B. W. Spencer and G. Pastore, "Multidimensional multiphysics simulation
# of TRISO particle fuel", Journal of Nuclear Materials, Vol. 443, p. 531,
# 2013.
# This is a version using an interface kernel to model gap mass transfer.
# Sorption constants are given in Table 1 of the following article: A.
# Londono-Hurtado, I. Szlufarska, R. Bratton and D. Morgan, "A review of
# fission product sorption in carbon structures", Journal of Nuclear
# Materials, Vol. 426, p. 254, 2012.
initial_fuel_density = 11000
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = disp_x
flux_conversion_factor = 0.85
[]
[Mesh]
coord_type = RSPHERICAL
[gen] # exclude gap to establish buffer-IPyC neighbor relationships for the sorption interface kernel
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.125e-4 3.125e-4 3.525e-4 3.875e-4 4.275e-4'
mesh_density = '10 5 2 2 2'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[break] # create gap between buffer and IPyC to model mechanical and thermal contact
type = BreakMeshByBlockGenerator
input = gen
block_pairs = 'buffer IPyC'
split_interface = true
add_interface_on_two_sides = true
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1500.0
[]
[conc]
initial_condition = 0.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fluence]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[creep_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_zz]
order = CONSTANT
family = MONOMIAL
[]
[gap_HTC]
order = CONSTANT
family = MONOMIAL
[]
[gap_distance]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[integral_flux_error]
type = ParsedFunction
symbol_names = 'buffer_integral_flux IPyC_integral_flux'
symbol_values = 'buffer_integral_flux IPyC_integral_flux'
expression = 'IPyC_integral_flux + buffer_integral_flux'
[]
[partial_pressure_error]
type = ParsedFunction
symbol_names = 'buffer_partial_pressure IPyC_partial_pressure'
symbol_values = 'buffer_partial_pressure IPyC_partial_pressure'
expression = 'IPyC_partial_pressure - buffer_partial_pressure'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress'
strain = FINITE
incremental = true
add_variables = false
[default]
block = 'fuel buffer IPyC OPyC'
eigenstrain_names = 'thermal_strain swelling_strain'
extra_vector_tags = 'ref'
[]
[SiC]
block = 'SiC'
eigenstrain_names = 'thermal_strain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = TimeDerivative
variable = conc
extra_vector_tags = 'ref'
[]
[mass]
type = ArrheniusDiffusion
variable = conc
extra_vector_tags = 'ref'
[]
[mass_source]
type = BodyForce
variable = conc
function = power_history
value = 1.22e-5 # units of moles/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = fuel
fission_rate_function = power_history
value = 3.89e19
execute_on = timestep_begin
[]
[fluence]
type = MaterialRealAux
property = fast_neutron_fluence
variable = fluence
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
execute_on = timestep_begin
density = ${initial_fuel_density}
[]
[creep_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_xx
index_i = 0
index_j = 0
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_yy
index_i = 1
index_j = 1
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_zz
index_i = 2
index_j = 2
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = buffer_IPyC
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_buffer
secondary = buffer_IPyC
penalty = 1e5
model = frictionless
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_buffer
secondary = buffer_IPyC
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
gap_geometry_type = SPHERE
tangential_tolerance = 1e-6
roughness_coef = 0.0
quadrature = true
[]
[]
[InterfaceKernels]
[cesium_gap]
type = SorptionIsothermGapInterface
variable = conc
neighbor_var = conc
partial_pressure_name = partial_pressure
sorption_penalty = 1e5
diffusivity = arrhenius_diffusion_coef
use_flux_penalty = true
flux_penalty = 1e3
boundary = buffer_IPyC
extra_vector_tags = 'ref'
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
extra_vector_tags = 'ref'
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temp
boundary = exterior
function = temp_bc
extra_vector_tags = 'ref'
[]
# fix concentration on free surface
[freesurf_conc]
type = DirichletBC
variable = conc
boundary = exterior
value = 0.0
extra_vector_tags = 'ref'
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 'buffer_IPyC IPyC_buffer'
initial_pressure = 0
startup_time = 1.0e4
R = 8.3145
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 5e17
[]
[fission_gas_release] # Sifgrs fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temp
burnup = burnup
eigenstrain_name = 'swelling_strain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel'
[]
[fuel_elasticity]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = .345
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density} # kg/m^3
[]
[fuel_conc]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_eigenstrain]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = 'swelling_strain'
[]
[buffer_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[buffer_elasticity]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e10
poissons_ratio = .23
[]
[buffer_stress]
type = PyCCreep
block = buffer
temperature = temp
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_conc]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_partial_pressure]
type = SorptionPartialPressure
A = 19.33
B = -47290
D = 1.518
E = 4338
d1 = 3.397
d2 = 6.15e-4
unit_scale = 1e3 # convert from mol to mmol
density = density # convert from mmol/m^3 to mmol/kg
concentration = conc
temperature = temp
block = 'buffer IPyC'
outputs = 'all'
output_properties = partial_pressure
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[IPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[IPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[IPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[IPyC_disp]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temp
[]
[IPyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = StrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1900.0
[]
[IPyC_conc]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8
q1 = 222.0e+3
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_elasticity]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = .13
[]
[SiC_creep]
type = MonolithicSiCCreepUpdate
block = SiC
temperature = temp
k_function = k_function
[]
[SiC_stress]
type = ComputeMultipleInelasticStress
block = SiC
tangent_operator = elastic
inelastic_models = 'SiC_creep'
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_conc]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[OPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[OPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[OPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[OPyC_conc]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[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'
nl_rel_tol = 5e-4
nl_abs_tol = 1e-9
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 85.3682e6
dt = 100
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
growth_factor = 1.5
linear_iteration_ratio = 100
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
[]
[Predictor]
type = SimplePredictor
scale = 1
skip_times_old = '0 76e6 76.001e6 84.641e6 84.6482e6'
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
sync_times = '100 6308007 75696087'
sync_only = true
[]
[]
[Postprocessors]
[Cs_release]
type = SideIntegralMassFlux
variable = conc
boundary = exterior
execute_on = timestep_end
[]
[dt]
type = TimestepSize
execute_on = timestep_end
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
scale_factor = -1
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
scale_factor = -1
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = 'buffer_IPyC IPyC_buffer'
# ro = 3.125e-4
# ri = 2.125e-4
# vb = 4/3*pi*(ro^3-ri^3) = 8.76e-11
# buffer density = 1000
# PyC density = 1900
# fill ratio = 10/19
# vb*10/19 = 4.6e-11
# Must remove 4.6e-11 m^3 from the volume
addition = -4.6e-11
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = 'buffer_IPyC IPyC_buffer'
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = 'buffer_IPyC IPyC_buffer'
variable = temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[buffer_integral_flux]
type = SideDiffusiveFluxIntegral
variable = conc
boundary = buffer_IPyC
diffusivity = arrhenius_diffusion_coef
[]
[IPyC_integral_flux]
type = SideDiffusiveFluxIntegral
variable = conc
boundary = IPyC_buffer
diffusivity = arrhenius_diffusion_coef
[]
[buffer_partial_pressure]
type = SideAverageMaterialProperty
property = partial_pressure
boundary = buffer_IPyC
[]
[IPyC_partial_pressure]
type = SideAverageMaterialProperty
property = partial_pressure
boundary = IPyC_buffer
[]
[integral_flux_error]
type = FunctionValuePostprocessor
function = integral_flux_error
[]
[partial_pressure_error]
type = FunctionValuePostprocessor
function = partial_pressure_error
[]
[integral_Cs_release]
type = TimeIntegratedPostprocessor
value = Cs_release
[]
[Cs_production]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.22e-5 # units of moles/m**3-s
[]
[time_integral_Cs_production]
type = TimeIntegratedPostprocessor
value = Cs_production
[]
[volumeFuel_initial]
type = InternalVolume
boundary = fuel_outer_boundary
scale_factor = -1
execute_on = initial
[]
[integral_Cs_production]
type = ParsedPostprocessor
pp_names = 'time_integral_Cs_production volumeFuel_initial'
expression = 'time_integral_Cs_production * volumeFuel_initial'
[]
[Cs_release_fraction]
type = ParsedPostprocessor
pp_names = 'integral_Cs_release integral_Cs_production'
expression = 'integral_Cs_release / integral_Cs_production'
[]
[]
[VectorPostprocessors]
[temperaturevpp]
type = SideValueSampler
boundary = 11
variable = temp
sort_by = x
outputs = 'csv'
use_displaced_mesh = true
[]
[]
(examples/2D_plane_strain_fretting_wear/fretting-wear-initial-dyn-exc.i)
user_start_time = 1.0e5
user_end_time = 1.000002e5
end_dynamic_excitation = 1.000002e5
time_step_dynamics = 2.0e-3
step_number = 1
initial_fuel_density = 10431.0
[GlobalParams]
temperature = temp
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = fretting-wear-initial_out_cp/LATEST
skip_partitioning = true
allow_renumbering = false
[]
patch_size = 100 # For contact algorithm
[]
[Variables]
[temp]
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y '
converge_on = 'disp_x disp_y temp'
restart_file_base = ./fretting-wear-initial_out_cp/LATEST
material_coverage_check = false
kernel_coverage_check = false
[]
[AuxVariables]
[fission_rate]
block = pellet_type_1
[]
[burnup]
block = pellet_type_1
[]
[fast_neutron_flux]
block = 'clad grid'
[]
[fast_neutron_fluence]
block = 'clad grid'
[]
[relocation_strain]
order = CONSTANT
family = MONOMIAL
[]
[worn_depth]
order = FIRST
family = LAGRANGE
block = 'spacer_clad_mechanical_secondary_subdomain'
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[pressure_var] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '0 1e4'
y = '0 1'
[]
[pressure_var_variable] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = ParsedFunction
expression = 'if(t < 1e4, 1, 1 + sin((t-1e4)*pi/10.0) * (t-1e4))'
[]
[]
[Physics/SolidMechanics/Dynamic]
[pellets]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = pellet_type_1
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = clad
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[grid]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = grid
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'grid_thermal_eigenstrain grid_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
block = 'pellet_type_1 clad grid'
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
block = 'pellet_type_1 clad'
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[spacer_clad_mechanical]
formulation = mortar
model = coulomb
primary = 101
secondary = 102
c_normal = 1e+12 # 5e13
c_tangential = 1e+18
friction_coefficient = 0.4
# Do not apply dynamic stabilization
newmark_beta = 0.0001
newmark_gamma = 0.5
capture_tolerance = 0.0
mortar_dynamics = true
interpolate_normals = false
normal_lm_scaling = 1.0e-6
tangential_lm_scaling = 1.0e-6
generate_mortar_mesh = false
wear_depth = worn_depth
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical_real]
formulation = mortar
model = frictionless
primary = 7
secondary = 8
c_normal = 1e+16 #
c_tangential = 1e+16
friction_coefficient = 0.4
# Do not apply dynamic stabilization
newmark_beta = 0.0001
newmark_gamma = 0.5
capture_tolerance = 0.0
mortar_dynamics = true
interpolate_normals = false
generate_mortar_mesh = false
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = 7
secondary_boundary = 8
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
primary_subdomain = 'pellet_clad_mechanical_real_primary_subdomain'
secondary_subdomain = 'pellet_clad_mechanical_real_secondary_subdomain'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 21
axial_axis = 2
density = ${initial_fuel_density}
a_lower = -1e-3 # mesh dependent!
a_upper = 1e-3 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
RPF = RPF
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[worn_depth]
type = MortarArchardsLawAux
variable = worn_depth
primary_boundary = 101
secondary_boundary = 102
primary_subdomain = 'spacer_clad_mechanical_primary_subdomain'
secondary_subdomain = 'spacer_clad_mechanical_secondary_subdomain'
displacements = 'disp_x disp_y'
friction_coefficient = 0.5
energy_wear_coefficient = 0.1e-9
normal_pressure = spacer_clad_mechanical_normal_lm
execute_on = 'TIMESTEP_END'
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[relocation_strain]
type = MaterialRealAux
property = relocation_strain
variable = relocation_strain
block = pellet_type_1
execute_on = timestep_end
[]
[]
[BCs]
# Define boundary conditions
[no_y_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_y
boundary = 15
value = 0.0
[]
[no_x_all] # pin pellets and clad along axis of symmetry (x)
type = DirichletBC
variable = disp_x
boundary = 16
value = 0.0
[]
# Flow-induced vibrations refined_excitation
[vibration_x] # pin pellets and clad along axis of symmetry (y)
type = FunctionDirichletBC
variable = disp_x
boundary = '112'
expression = 'if(t < ${end_dynamic_excitation}, 10.0*1.0e-6*sin(2*3.1415926535*20* (t - ${user_start_time})) + 2.0*1.0e-6*sin(2*3.1415926535*35*(t - ${user_start_time})), 0)'
#expression = '0'
[]
[vibration_y] # pin pellets and clad along axis of symmetry (y)
type = FunctionDirichletBC
variable = disp_y
boundary = '112'
expression = 'if(t < ${end_dynamic_excitation}, 10.0*1.0e-6*sin(2*3.1415926535*20*(t-${user_start_time})) + 2.0*1.0e-6*sin(2*3.1415926535*35*(t-${user_start_time})) + 0.9e-4, 0.9e-4)'
#expression = '5.9e-4'
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = pressure_var # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxBC
boundary = '2'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 580.0
final = 580.0
duration = 1.0e4 #duration of initial power ramp
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = pellet_type_1
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_solid_mechanics_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
temperature = temp
eigenstrain_name = 'fuel_volumetric_eigenstrain'
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
density = 10431.0
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1'
youngs_modulus = 906e6
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 1.e20
relocation_activation1 = 5000
axial_axis = 2
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'clad_irradiation_eigenstrain'
[]
[grid_thermal]
type = HeatConductionMaterial
block = 'grid'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[grid_elasticity_tensor]
type = ZryElasticityTensor
block = 'grid'
[]
[grid_creep_model]
type = ZryCreepHayesHoppeUpdate
block = 'grid'
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[grid_stress]
type = ComputeMultipleInelasticStress
block = 'grid'
tangent_operator = elastic
inelastic_models = 'grid_creep_model'
[]
[grid_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'grid'
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'grid_thermal_eigenstrain'
[]
[grid_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = grid
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'grid_irradiation_eigenstrain'
[]
[fission_gas_release] # Forsberg-Massih fission gas release mode
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius = 10.0e-6
#external_pressure = 40e6
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431.0
[]
[grid]
type = StrainAdjustedDensity
block = grid
density = 6560
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-14'
snesmf_reuse_base = true
line_search = 'basic'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 35
nl_rel_tol = 1e-7
nl_abs_tol = 1e-11
[TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[]
start_time = '${user_start_time}'
end_time = '${user_end_time}'
timestep_tolerance = 1e-8
[TimeStepper]
type = IterationAdaptiveDT
dt = '${time_step_dynamics}'
time_t = '${end_dynamic_excitation}'
time_dt = '${time_step_dynamics}'
growth_factor = 1.2
cutback_factor = 0.75
[]
dtmax = 3e-2
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[average_interior_clad_temperature] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[average_centerline_fuel_temperature] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial timestep_end'
[]
[plenum_volume] # gas volume
type = InternalVolume
boundary = 9
addition = 1.3e-5 #rough guess of plenum volume/unit length of fuel
execute_on = 'initial linear'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_generated] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = linear
[]
[fission_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
execute_on = timestep_end
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_generated
[]
[]
[VectorPostprocessors]
[contact_pressure]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = spacer_clad_mechanical_normal_lm
boundary = 102
[]
[frictional_pressure]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = spacer_clad_mechanical_tangential_lm
boundary = 102
[]
[worn_depth]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = worn_depth
boundary = 102
execute_on = TIMESTEP_END
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
execute_on = 'FINAL'
[console]
type = Console
max_rows = 25
[]
checkpoint = true
file_base = 'step_${step_number}'
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part2.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_196_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.0248576
pellet_height = 0.2606424
pellet_quantity = 1
clad_bot_gap_height = 0.0145
pellet_outer_radius = 3.92e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 86400 47386400 47472800 47559200 47645600 94945600 95032000'
y = '0.0065371 1 1 1 1 1 1 1 0.0065371'
scale_factor = 15.5e6
[]
[clad_surface_temperature]
type = PiecewiseBilinear
axis = 1
data_file = clad_temperature.csv
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = 'fission_gas_released he_prod'
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 95032000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = 'fission_gas_released he_prod'
output = plenum_pressure
refab_time = 95032000
refab_pressure = 8.2e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[clad_temp]
type = FunctionDirichletBC
function = clad_surface_temperature
variable = temperature
boundary = 2
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
# [terminator]
# type = Terminator
# expression = 'burst > 0'
# []
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.00914 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
rod_ave_lin_pow = power_history
temperature = temperature
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = BoundingValueElementDamper
min_value = 290.0
max_value = 3000.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# n_startup_steps = 1
end_time = 95033429.6
dtmax = 20
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[he_prod]
type = IFBAHeProduction
b10_load = 9.27165354e-5
b10_enrich = 0.5
burnup = average_burnup
zrb2_thick = 10e-6
fuel_out_rad = 9.32e-3
ifba_len = 0.3
u235_enrich = 0.05
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/total_swelling_rz.i)
#
# Test of combined swelling and densification (1000K)
#
# With a burnup of 0.05, the volume should be 1.0193, the delta
# due to the sum of the solid, gaseous, and densification portions
# of the swelling.
#
# This is easily checked with the 'volume' postprocessor value.
#
initial_fuel_density = 10430.0
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = patch_rz.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = volumetric_swelling
temperature = temp
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.05'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[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
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[]
[left_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 1000.0
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 2
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = 1
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
eigenstrain_name = volumetric_swelling
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1000.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal]
type = UO2Thermal
block = 1
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
[]
[densification]
type = ElementAverageValue
variable = densification
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
file_base = total_swelling_rz_out
[]
(assessment/LWR/validation/IFA_562/analysis/IFA_562_Base.i)
# This is a partial input file that contains characteristics common to the entire asssessment
# NOTE: This file requires information specified in the rod-specific .params files and is NOT meant to be run on its own
# Reference document HWR-247
# Block 1 = cladding, Block 3 and 5 = insulators Block 4 = fuel
# Last update 11/12/2015
# Fuel material properties
initial_fuel_density = 10321.2 # kg/m^3 # initial fuel density 94% of theoretical (10980 kg/m3)
initial_grain_radius = 7.75e-6 # m (grain radius is not reported, number from IFA-515)
initial_fuel_porosity = 0.06 # (-)
fuel_thermal_expansion_coeff = 10.0e-6 # K^-1
fuel_youngs_modulus = 2.0e11 # Pa
fuel_poissons_ratio = 0.345 # (-)
# Insulator material properties
insulator_youngs_modulus = 2.0e11 # Pa
insulator_poissons_ratio = 0.345 # (-)
insulator_thermal_expansion_coeff = 10.0e-6 # K^-1
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_density = 6551.0 # kg/m^3
# Rod geometry
a_lower = 0.01101 # m (Checked with Paraview)
a_upper = 0.45351 # m (Checked with Paraview)
fuel_inner_radius = 0.001 # m (Checked with Paraview)
fuel_outer_radius = 0.0029575 # m (Checked with Paraview)
fuel_volume_ratio = 1.0 # (-)
fuel_diameter = 0.005915 # m
diametral_gap = 1.0e-4 # m
rod_power_scale_factor = 0.4425 # m (rod height)
# Neutronics, power, and isotope fractions
energy_per_fission = 3.2e-11 # J/fission (200 MeV per fission)
isotope_fraction_U235 = 0.12
isotope_fraction_U238 = 0.88
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
burnup_function = 0 # GWd/tUO2
# Temperature conditions
initial_temperature = 300 # K
stress_free_temperature = 300 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-100 0'
pressure_ramp_y = '0.0298 1'
pressure_ramp_factor = 3.40e6 # (-)
# Plenum parameters
initial_plenum_pressure = 1.0e6 # Pa
startup_time = 0 # s
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-K
# Contact and relocation
contact_penalty = 1e14 # (-)
roughness_secondary = 1e-6
roughness_primary = 2e-6
kennard_coefficient = 0.2173
# Relocation
relocation_activation1 = 5000 # W/m
burnup_relocation_stop = 0.02524 # FIMA
# Numerical options
damper_max_temperature_value = 3200 # K
damper_min_temperature_value = 200 # K
l_max_its = 50
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100 # s
end_time = 84612900 # s
dtmax = 1e6 # s
dtmin = 1 # s
TimeStepper_dt = 100 # s
TimeStepper_optimal_iterations = 25
TimeStepper_iteration_window = 6
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
temperature = temperature
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature} # set initial temperature to ambient
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[grain_radius]
block = '4'
initial_condition = ${initial_grain_radius}
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_peaking_factors]
type = ParsedFunction # no axial power profile
expression = '1'
[]
[clad_wall_temperature]
type = PiecewiseLinear
data_file = ${coolant_temperature_data_file}
format = columns
[]
[axial_clad_peaking]
type = ParsedFunction # no axial clad temperature
expression = '1'
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temperature axial_clad_peaking'
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[flux]
type = PiecewiseLinear
data_file = ${flux_data_file}
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 4
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[insulator]
block = '3 5'
strain = FINITE
incremental = true
eigenstrain_names = 'insulator_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = 4
fission_rate = fission_rate
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 4
rod_ave_lin_pow = power_profile # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 20
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
function = flux
axial_power_profile = axial_peaking_factors
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '4'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
normalize_penalty = true
penalty = ${contact_penalty}
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact_clad]
type = GasGapHeatTransfer
variable = temperature
primary = 5 # clad
secondary = 10 # fuel & insulators
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = ${roughness_secondary}
roughness_primary = ${roughness_primary}
kennard_coefficient = ${kennard_coefficient}
gap_conductance_model = TOPTAN
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
jump_distance_model = TOPTAN
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = 5
outer_surfaces = 10
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temperature
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor} # coolant pressure not reported, using the number from IFA-515
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 4
burnup = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = '4'
temperature = temperature
thermal_conductivity_model = NFIR
burnup = burnup
initial_porosity = ${initial_fuel_porosity}
[]
[insulator_thermal]
type = UO2Thermal
block = '3 5'
temperature = temperature
thermal_conductivity_model = NFIR
burnup_function = ${burnup_function}
initial_porosity = ${initial_fuel_porosity}
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = '4'
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 4
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '4'
youngs_modulus = ${fuel_youngs_modulus}
poissons_ratio = ${fuel_poissons_ratio}
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 4
burnup = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
burnup_relocation_stop = ${burnup_relocation_stop}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[insulator_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 5'
[]
[insulator_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '3 5'
youngs_modulus = ${insulator_youngs_modulus}
poissons_ratio = ${insulator_poissons_ratio}
[]
[insulator_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = '3 5'
thermal_expansion_coeff = ${insulator_thermal_expansion_coeff}
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'insulator_thermal_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 4
temperature = temperature
fission_rate = fission_rate
burnup = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = ${initial_fuel_porosity}
transient_option = ${fgr_transient_option}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = '4 3 5'
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = ${damper_max_temperature_value}
min_value = ${damper_min_temperature_value}
variable = temperature
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = ${l_max_its}
l_tol = ${l_tol}
# controls for nonlinear iterations
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# time control
start_time = ${start_time}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
# control for adaptive time steping
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
optimal_iterations = ${TimeStepper_optimal_iterations}
iteration_window = ${TimeStepper_iteration_window}
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temperature]
type = SideAverageValue
boundary = 7
variable = temperature
outputs = exodus
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = 4
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = ${rod_power_scale_factor}
[]
[average_fission_rate]
type = ElementAverageValue
block = 4
variable = fission_rate
[]
[FCT_ave]
type = SideAverageValue
boundary = 13
variable = temperature
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 4
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_centerline_fuel_temperature average_burnup
fission_gas_released_percentage maximum_clad_elongation
maximum_fuel_elongation rod_total_power'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(examples/3D_rodlet_3pellets/discrete_full/3d_3pellets_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
volumetric_locking_correction = true
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
converge_on = 'disp_x disp_y disp_z temp'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = DiscreteThreePellets3D_full_HEX8.e
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[frictional_status]
family = LAGRANGE
order = FIRST
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[frictional_state]
type = MortarFrictionalStateAux
tangent_one = pellet_clad_mechanical_tangential_lm
tangent_two = pellet_clad_mechanical_tangential_3d_lm
boundary = 10
contact_pressure = pellet_clad_mechanical_normal_lm
variable = frictional_status
mu = 0.5
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = mortar
model = coulomb
c_normal = 1e+18
c_tangential = 1e+18
friction_coefficient = 0.5
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1004
value = 0.0
[]
[no_z_all]
type = DirichletBC
variable = disp_z
boundary = 1004
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_x_clad_bottom]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[no_z_clad_bottom]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[]
[no_z_fuel_bottom_point]
type = DirichletBC
variable = disp_z
boundary = 1110
value = 0.0
[]
[no_z_fuel_bottom_point_y]
type = DirichletBC
variable = disp_y
boundary = 1110
value = 0.0
[]
[no_x_fuel_bottom_point]
type = DirichletBC
variable = disp_x
boundary = 1120
value = 0.0
[]
[no_x_fuel_bottom_point_y]
type = DirichletBC
variable = disp_y
boundary = 1120
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
# thermal_expansion_coeff = 10.0e-6 (reference)
# We are artificially increasing the fuel expansion to simulate mechanical contact within reasonable 'example' time
thermal_expansion_coeff = 50.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
line_search = 'basic'
l_max_its = 10
nl_max_its = 40
nl_rel_tol = 1e-7
nl_abs_tol = 1e-8
start_time = -200
dtmin = 1.0
end_time = 25200
nl_div_tol = 1e+40
# For a regular thermal expansion value, use following end_time
# end_time = 4.0e7
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 1.0
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released]
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad]
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power]
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[checkpoint]
type = Checkpoint
time_step_interval = 1
file_base = ckpoint_mortar_dup
num_files = 2
[]
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'fission_gas_released plenum_pressure interior_temp gas_volume'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.i)
initial_fuel_density = 10430.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.262416
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseBilinear
data_file = average_coolant_htc.csv
axis = 1
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 200412461 200413048'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain
fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hoop_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_zz creep_strain_zz hoop_stress'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[rel]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
gap_thickness_threshold = 0.00039
axial_relocation_output_options = 'MASS_FRACTION'
mesh_generator = layered1D_mesh
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 199159200
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 199159200
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 1.9e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 199159200.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10430.0
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 199159200 # End base irradiation
# end_time = 200412431 # Begin Blowdown
# end_time = 200413048 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '199159200 200312431 200411431 200412431 200412461 200413048'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_9_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(examples/spent_fuel/full_life_cycle_coarse/discrete.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
# Modifying the base model to simulate the complete fuel life cycle from
# irradiation through dry storage
# Irradiation Time 3 years (6% burnup, ~ 60 MWd/kgU)
# Spent Fuel Pool 3 years
# Vacuum Drying 24 hours
# Dry Cask Storage (DCSS) 5 years
#
irrad_ramp = 8.64e4
irrad_end = 9.46944e7
cool_start = 9.47808e7
cool_end = 4.101408e8
dry_start = 4.101409e8
# dry_end = 4.102272e8 # 24 hour drying
dry_end = 4.101696e8 # 8 hour drying
# store_end = 5.679072e8 # 5 yrs storage
store_end = 4.732416e8 # 2 yrs storage
#
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 20 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = coarse10_rz.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 298.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[max_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start}'
y = '0 25e3 25e3 0'
[]
[axial_peaking_factors]
type = PiecewiseLinear
axis = y
x = '0.00324 0.0151 0.10998 0.12184'
y = '1.0 1.0 1.0 1.0'
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[coolant_pressure]
type = PiecewiseLinear
# ---- irrad ---- --- pool --- - storage -
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '1e5 15.5e6 15.5e6 2e5 2e5 1e5 1e5 1e5'
[]
[coolant_temperature]
type = PiecewiseLinear
# ---- irrad ---- --- pool --- - storage -
x = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '300 587 587 308 308 308 308 308'
[]
[coolant_htc]
type = PiecewiseLinear
# From CoolantChannel model, HTC falls from 37000 to 22000 as the oxide grows.
# Coolant flow is maintained until after CZP, then 1 more day. Flow is then reduced until the
# correct htc for natural convection is achieved (~400 W/m2-K).
# Drying is handled by DryCaskHeatFlux.
x = '0 ${irrad_ramp} 7e7 ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
y = '37e3 37e3 25e3 22e3 400 400 0 0 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate
decay_heat_function = decay_heat_function
max_fission_rate = max_fission_rate
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = pellet_type_1
fission_rate = fission_rate
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = nonlinear
[]
[creep_strain_mag]
type = MaterialRealAux
block = clad
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1.0
function = coolant_pressure
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxFunction
boundary = '1 2 3'
variable = temp
coefficient = 'coolant_htc'
T_infinity = 'coolant_temperature'
[]
[cask_cooling]
type = DryCaskHeatFlux
variable = temp
boundary = '1 2 3'
bwr_or_pwr = 'pwr'
fill_gas = 'helium'
ambient_temperature = 298
cask_effective_htc = 3.1 # W/K from each assembly to ambient
start_time = ${cool_end}
drying_duration = 86400
[]
[]
[Controls]
[DCSS]
type = TimePeriod
disable_objects = 'BCs/convective_clad_surface'
start_time = ${cool_end}
end_time = 1e9
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = '2'
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
fast_neutron_flux = fast_neutron_flux
outputs = all
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
initial_fuel_density = 10431.0
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 0.3
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_creep_model]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 298.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
# PETSC options:
# petsc_options
# petsc_options_iname
# petsc_options_value
#
# controls for linear iterations
# l_max_its
# l_tol
#
# controls for nonlinear iterations
# nl_max_its
# nl_rel_tol
# nl_abs_tol
#
# time control
# start_time
# dt
# optimal_iterations
# iteration_window
# linear_iteration_ratio
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 35
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -200
n_startup_steps = 1
end_time = ${store_end}
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 20
iteration_window = 6
time_t = '0 ${irrad_ramp} ${irrad_end} ${cool_start} ${cool_end} ${dry_start} ${dry_end} ${store_end}'
time_dt ='1e3 1e4 1e3 100 100 100 100 100'
growth_factor = 1.5
cutback_factor = .6
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = ${cool_start}
table_or_sum = sum
[]
[peak_clad_temp]
type = NodalExtremeValue
variable = temp
block = 'clad'
execute_on = 'timestep_end'
[]
[max_clad_hoop_stress]
type = ElementExtremeValue
variable = stress_zz
block = 'clad'
value_type = 'max'
execute_on = 'timestep_end'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[peak_oxide_thickness]
type = ElementExtremeValue
variable = oxide_thickness
block = 'clad'
value_type = 'max'
execute_on = 'timestep_end'
[]
[]
[VectorPostprocessors]
[clad_surf_props]
type = LineValueSampler
variable = 'oxide_thickness temp stress_zz'
start_point = '0.00467 0.0001 0'
end_point = '0.00467 0.1279 0'
num_points = 100
sort_by = y
outputs = 'outfile_1'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[chkfile]
type = CSV
show = 'peak_clad_temp peak_oxide_thickness max_clad_hoop_stress'
execute_on = final
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_10/IFA_650_10_part2.i)
# Halden test IFA-650.10
initial_fuel_density = 10447
[GlobalParams]
density = ${initial_fuel_density}. # 95.32% of 10960
displacements = 'disp_x disp_y'
temperature = temp
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = true
[]
[Problem]
restart_file_base = 'IFA_650_10_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh_ifa65010.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[]
[]
[Functions]
[linear_heat_rate]
type = PiecewiseLinear
data_file = lhr_average.csv
scale_factor = 1.e+03
format = columns
[]
[axial_power_peaking_factors]
type = PiecewiseBilinear
data_file = lhr_peaking_factors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[rod_outer_pressure]
type = PiecewiseLinear
data_file = rod_outer_pressure.csv
scale_factor = 1.e+06
format = columns
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = temp_outer_clad.csv
scale_factor = 1.
axis = 1 # (0,1,2) => (x,y,z)
[]
[q] # same as linear_heat_rate for the base irradiation
type = PiecewiseLinear
data_file = lhr_average.csv
scale_factor = 1.e+03
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heat_sink_temperature.csv
scale_factor = 1.
axis = 1 # (0,1,2) => (x,y,z)
[]
[average_coolant_htc]
type = PiecewiseLinear
data_file = htc_average.csv
scale_factor = 1.
format = columns
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '0 125690842. 125691189.5'
y = '9 9 8 '
direction = 'right'
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
format = columns
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_hflux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[thcond]
type = MaterialRealAux
property = thermal_conductivity
variable = thermal_conductivity
block = pellet_type_1
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxi_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
execute_on = 'initial linear'
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[coolant_hflux]
type = MaterialRealAux
property = output_heat_flux
variable = coolant_hflux
boundary = 2
execute_on = 'initial linear'
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
execute_on = 'initial linear'
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
execute_on = 'initial linear'
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
execute_on = 'initial linear'
[]
[pelletid]
type = PelletIdAux
block = pellet_type_1
variable = pellet_id
a_lower = 8.5e-03
a_upper = 448.5e-03
number_pellets = 44
execute_on = initial
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
[]
[clad]
block = clad
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = pellet_type_1
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
num_radial = 50
bias = 0.95
num_axial = 20
a_lower = 8.5e-03
a_upper = 448.5e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.105e-03
fuel_volume_ratio = 1.
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04487 0.95513 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.e+07
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
normal_smoothing_distance = 0.1
roughness_secondary = 1.8e-07
roughness_primary = 2.e-06
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 124861061.
refab_type = 0
[]
[]
#TODO: Add option in StandardLWRFuelRodOutputs to compute plenum temperature this way.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_outer_temperature
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
function = rod_outer_pressure
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.6e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 124861061.
refab_pressure = 4.e+06
refab_temperature = 293.15
refab_volume = 1.7e-05
[]
[]
[]
[Controls]
#[period0]
# type = TimePeriod
# disable_objects = 'BCs/clad_outer_temp'
# start_time = 0.
# end_time = 124861061.0
#[]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 125690771.0
end_time = 125691189.5
[]
[]
[CoolantChannel]
[convective_clad_surface] # PWR conditions (ignored after base irradiation)
boundary = '1 2 3'
variable = temp
heat_transfer_mode = heat_transfer_mode # prescribe htc until end of blowdown. Then use radiative (+ convective prescribed)
heat_transfer_coefficient = average_coolant_htc # For base irradiation, using averge htc from a previous simulation. Afterwards, use constant values (from jernkvist) plus radiation from end of blowdown
effective_emissivity = 0.6 # 0.75 # cf. Jernkvist
inlet_temperature = heat_sink_temperature # K
#inlet_pressure = 15.5e+06 # Pa
#inlet_massflux = 3800. # kg/m^2-s
rod_diameter = 9.5e-03 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
compute_enthalpy = false #true
#oxide_thickness = oxide_thickness
#heat_transfer_mode = 1 # Natural convection
#htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet_type_1
fragmentation_model = BARANI
rod_ave_lin_pow = linear_heat_rate
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
initial_fuel_density = 10447.
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
#burnup_function = burnup #TODO For consistency, we should specify burnup_function rather than fission_rate,
#but keeping it this way to match the SM model
initial_grain_radius = 4.65e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 8.21e-03
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
diametral_gap =150.e-06
burnup_relocation_stop = 1.e+20
eigenstrain_name = fuel_relocation_eigenstrain
relocation_activation1 = 19685.039
[]
[fission_gas]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.0468
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING_BURNUP
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.
specific_heat = 330.
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0 #TODO: It is odd to have different values for fuel and clad, but keeping this way to match SM
eigenstrain_name = clad_thermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1.e+11
poissons_ratio = 0.3
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
#TODO: The parameters below really should be provided, but they weren't specified in the SM model.
# They may have not been included because irradiation creep wasn't modeled. However, they are used in the thermal
# creep model as well.
# fast_neutron_flux = fast_neutron_flux
# fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
#eff_strain_rate_plast =
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temp
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_tol = 1.e-02 # <--- l_tol is ignored when EW is used.
#l_tol = 8.e-03
line_search = 'none'
l_max_its = 200
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
n_startup_steps = 1
#end_time = 124861061. # End of base irradiation
#end_time = 125690771. # Blowdown. End prescribing clad outer temperature.
#end_time = 125690842. # End of blowdown
end_time = 125691189.5
dtmax = 5.e+05
dtmin = 0.00000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = timestep_material
dt = 1.e+02
#growth_factor = 1.1
#optimal_iterations = 4
#iteration_window = 2
timestep_limiting_function = forced_times #linear_heat_rate
max_function_change = 2000.
force_step_every_function_point = true
time_t = '121509219. 124861061. 125680151. 125690151. 125690771. 125691027. 125691033.'
time_dt = '5.e+05 1.e+04 1.e+04 10. 5. 0.5 5. '
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = pellet_type_1
pellet_id = pellet_id
temperature = temp
a_lower = 8.5e-03
a_upper = 448.5e-03
pellet_radius = 4.105e-03
number_pellets = 44
execute_on = 'initial linear'
[]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = linear_heat_rate
execute_on = 'initial timestep_end'
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[oxygen_fract_max]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[oxygen_fgain_max]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfgain_total
execute_on = 'initial timestep_end'
[]
[creep_rate_max]
type = ElementExtremeValue
value_type = max
variable = creep_rate
block = clad
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[stress_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_midplane]
type = NodalVariableValue
nodeid = 676 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_tclow]
type = NodalVariableValue
nodeid = 826 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_tchigh]
type = NodalVariableValue
nodeid = 511 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_plenum_mid]
type = NodalVariableValue
nodeid = 241 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_inner_midplane]
type = NodalVariableValue
nodeid = 679 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_max]
type = NodalExtremeValue
boundary = '1 2 3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_ave]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_central]
type = NodalVariableValue
variable = temp
nodeid = 1569 # !! Mesh dependent
execute_on = 'initial timestep_end'
[]
[temp_fuel_outer_max]
type = NodalExtremeValue
boundary = 10
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_outer_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = hoop_strain
execute_on = 'initial timestep_end'
[]
[stress_clad_hoop_outer_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = hoop_stress
execute_on = 'initial timestep_end'
[]
[contact_pressure_midplane]
type = ElementalVariableValue
elementid = 1300 # !! Mesh dependent
variable = contact_pressure
execute_on = 'initial timestep_end'
[]
[oxide_thickness_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = oxide_thickness
execute_on = 'initial timestep_end'
[]
[gap_conductance_average]
type = SideAverageValue
boundary = 10
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[coolant_htc_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = coolant_htc
execute_on = 'initial timestep_end'
[]
[coolant_htc_average]
type = SideAverageValue
boundary = 2
variable = coolant_htc
execute_on = 'initial timestep_end'
[]
[coolant_hflux_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = coolant_hflux
execute_on = 'initial timestep_end'
[]
[coolant_hflux_average]
type = SideAverageValue
boundary = 2
variable = coolant_hflux
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[outfile_2]
type = CSV
execute_on = 'FINAL'
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/standard_lwr_outputs_action/two_pellet_only.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false
patch_size = 10
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = two_pellet_only.e
[]
[]
[Variables]
[temperature]
initial_condition = 293
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100 1e8'
y = '0 20000 20000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
add_variables = true
strain = SMALL
incremental = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
RPF = RPF
[]
[]
[BCs]
[fuel_wall_temp]
type = DirichletBC
variable = temperature
boundary = '10'
value = 673
preset = false
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2'
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1 pellet_type_2'
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_2'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2'
temperature = temperature
burnup_function = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_2'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
dtmax = 200
dtmin = 200
end_time = 800
[]
[StandardLWRFuelRodOutputs]
rod_component = fuel
fuel_pellet_blocks = 'pellet_type_1'
[]
[Outputs]
perf_graph = true
exodus = false
color = false
csv = true
[]
(test/tests/axial_relocation/axial_relocation_eigenstrain_action_phasefield.i)
# This input is designed to ensure that the pulverization model is properly created through
# the axial relocation action. Given the conditions provided the layered volume of pulverized
# fuel is calculated to be 5.07594e-6 m^3. In this case the phase_field option is used with
# evolve_bubble_pressure_hbs = true and using the 3D phase field criterion
# for pulverization.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = disp_x
temperature = temperature
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
fuel_height = 0.5
include_plenum = false
nx_p = 10
clad_gap_width = 0.0
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 1200
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*6.2857*t/4.275'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '15000 15000'
[]
[clad_displacement_function]
type = ParsedFunction
expression = '2.0e-5 * t * sin(pi * y / 0.5)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[gps_fuel]
add_scalar_variables = true
add_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = fuel
eigenstrain_names = 'axial_relocation_eigenstrain'
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[gps_clad]
add_scalar_variables = true
add_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = clad
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
block = fuel
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
gap_conductivity = 1
[]
[]
[BCs]
[temperature]
type = DirichletBC
boundary = '10 12 5 2'
variable = temperature
value = 1200
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[inner_clad_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '5'
function = clad_displacement_function
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup = burnup
output_properties = hbs_porosity
outputs = exodus
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = .345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[hbs_formation]
type = HighBurnupStructureFormation
block = fuel
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
evolve_bubble_pressure_hbs = true
hbs_model = true
hbs_material = hbs_formation
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power
pulverization_threshold = PHASE_FIELD_3D
fission_rate = fission_rate
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 14
dt = 2
[]
[Outputs]
exodus = true
hide = 'penetration'
[]
(assessment/LWR/validation/HbepR1/analysis/H8364/HbepR1_H8364.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.95e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0049695
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.244325
clad_gap_width = 1.005e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = iteration #auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = H8364-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = H8364-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = H8364-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6727e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0049695 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0139 .9861 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 3.5e-7
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00507
clad_outer_radius = 0.005865
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.009939 # fuel pellet diameter in meters
diametral_gap = 100.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .049 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/benchmark/RIA_benchmark/analysis/RIA_benchmark.i)
# RIA Benchmark - Case 5 with full output in CSV
initial_fuel_density = 10531
[GlobalParams]
density = ${initial_fuel_density} # UO2 with 4% porosity
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 20
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 40
ny_cu = 3
ny_c = 40
ny_cl = 3
nx_c = 5
clad_thickness = 5.7e-4
pellet_outer_radius = 4.13e-3
pellet_quantity = 10
pellet_height = 1e-2
clad_top_gap_height = 0.0186616493139897
clad_bot_gap_height = 0.0186616493139897
clad_gap_width = 0.0
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.15
[]
[]
[AuxVariables]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_water_htc]
order = CONSTANT
family = MONOMIAL
[]
[clad_water_flux]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0
[]
[]
[Functions]
[power_history] # triangular pulse power history defined by benchmark
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 0
10 0
20 0
30 0
40 0
50 0
60 0
70 0
80 0
90 0
100 0
100.0003 0.01
100.0006 0.02
100.0009 0.03
100.030 1
100.060 0
100.081 0
100.082 0
100.083 0
100.084 0
100.085 0
100.086 0
100.087 0
100.088 0
100.089 0
100.090 0
100.091 0
100.092 0
100.093 0
100.094 0
100.095 0
100.096 0
100.097 0
100.098 0
100.099 0
100.100 0
100.105 0
100.110 0
100.115 0
100.120 0
100.125 0
100.130 0
100.135 0
100.140 0
100.145 0
100.150 0
100.155 0
100.160 0
100.165 0
100.170 0
100.175 0
100.180 0
100.185 0
100.190 0
100.195 0
100.200 0
100.210 0
100.220 0
100.230 0
100.240 0
100.250 0
100.260 0
100.270 0
100.280 0
100.290 0
100.300 0
100.310 0
100.320 0
100.330 0
100.340 0
100.350 0
100.360 0
100.370 0
100.380 0
100.390 0
100.400 0
100.410 0
100.420 0
100.430 0
100.440 0
100.450 0
100.460 0
100.470 0
100.480 0
100.490 0
100.500 0
100.510 0
100.520 0
100.530 0
100.540 0
100.550 0
100.560 0
100.570 0
100.580 0
100.590 0
100.600 0
100.610 0
100.620 0
100.630 0
100.640 0
100.650 0
100.660 0
100.670 0
100.680 0
100.690 0
100.700 0
100.710 0
100.720 0
100.730 0
100.740 0
100.750 0
100.760 0
100.770 0
100.780 0
100.790 0
100.800 0
100.810 0
100.820 0
100.830 0
100.840 0
100.850 0
100.860 0
100.870 0
100.880 0
100.890 0
100.900 0
100.910 0
100.920 0
100.930 0
100.940 0
100.950 0
100.960 0
100.970 0
100.980 0
100.990 0
101.000 0
101.100 0
101.200 0
101.300 0
101.400 0
101.500 0
101.600 0
101.700 0
101.800 0
101.900 0
102.000 0
102.100 0
102.200 0
102.300 0
102.400 0
102.500 0
102.600 0
102.700 0
102.800 0
102.900 0
103.000 0
103.100 0
103.200 0
103.300 0
103.400 0
103.500 0
103.600 0
103.700 0
103.800 0
103.900 0
104.000 0
104.100 0
104.200 0
104.300 0
104.400 0
104.500 0
104.600 0
104.700 0
104.800 0
104.900 0
105.000 0
105.100 0
105.200 0
105.300 0
105.400 0
105.500 0
105.600 0
105.700 0
105.800 0
105.900 0
106.000 0
106.100 0
106.200 0
106.300 0
106.400 0
106.500 0
106.600 0
106.700 0
106.800 0
106.900 0
107.000 0
107.100 0
107.200 0
107.300 0
107.400 0
107.500 0
107.600 0
107.700 0
107.800 0
107.900 0
108.000 0
108.100 0
108.200 0
108.300 0
108.400 0
108.500 0
108.600 0
108.700 0
108.800 0
108.900 0
109.000 0
109.100 0
109.200 0
109.300 0
109.400 0
109.500 0
109.600 0
109.700 0
109.800 0
109.900 0
110 0
111 0
112 0
113 0
114 0
115 0
116 0
117 0
118 0
119 0
120 0
130 0
140 0
150 0
160 0
170 0
180 0
190 0
200 0'
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 1e5
50 1.55e7
200 1.55e7'
[]
[temp_ramp] # inlet coolant temperature evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 293.15
50 553.15
200 553.15'
[]
[Fuel_CTE_function] #Fuel CTE as a function of temp from MATPRO data
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 1.00005E-05
300 1.00005E-05
350 1.00005E-05
400 1.00015E-05
450 0.000010004
500 1.00091E-05
550 0.000010018
600 1.00321E-05
650 1.00522E-05
700 1.00791E-05
750 1.01131E-05
800 1.01544E-05
850 1.02028E-05
900 1.02577E-05
950 1.03187E-05
1000 0.000010385
1050 0.000010456
1100 1.05308E-05
1150 1.06087E-05
1200 1.06891E-05
1250 1.07712E-05
1300 1.08545E-05
1350 1.09384E-05
1400 1.10224E-05
1450 1.11061E-05
1500 1.11891E-05
1550 1.12712E-05
1600 1.13519E-05
1650 1.14311E-05
1700 1.15087E-05
1750 1.15844E-05
1800 0.000011658
1850 1.17297E-05
1900 1.17991E-05
1950 1.18664E-05
2000 1.19314E-05
2050 1.19942E-05
2100 1.20547E-05
2150 0.000012113
2200 1.21691E-05
2250 1.22229E-05
2300 1.22746E-05
2350 1.23242E-05
2400 1.23717E-05'
[]
[Clad_CTE_function] #Cladding CTE as a function of temp from MATPRO data
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 0.00000495
300 0.00000495
350 0.00000495
400 0.00000495
450 0.00000495
500 0.00000495
550 0.00000495
600 0.00000495
650 0.00000495
700 0.00000495
750 0.00000495
800 0.00000495
850 0.00000495
900 0.00000495
950 0.00000495
1000 0.00000495
1050 0.00000495
1083 0.00000495
1100 4.76997E-06
1150 3.60423E-06
1200 2.2888E-06
1244 1.77904E-06
1250 1.81579E-06
1300 0.00000221
1350 2.56667E-06
1400 2.89091E-06
1450 3.18696E-06
1500 3.45833E-06
1550 0.000003708
1600 3.93846E-06
1650 4.15185E-06
1700 0.00000435
1750 4.53448E-06
1800 4.70667E-06
1850 4.86774E-06
1900 5.01875E-06
1950 5.16061E-06
2000 5.29412E-06
2050 0.00000542
2098 5.53426E-06'
[]
[YS_function] #Yield Strength as a function of temp from PNNL report
#Cold work = 0.5, Average oxygen concentration = 0, fast neutron fluence = 0
#Assumed constant strain rate of 0.01
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 593425301.8
300 593425301.8
320 580674456.3
340 567078477.7
360 552695674.7
380 537584819.6
400 521805085.5
420 505428587.7
440 489716889.1
460 475582155.5
480 462727514.7
500 450878059.4
520 439778204.9
540 429188702.8
560 418888211.8
580 408677370.3
600 398362281.7
620 387769321.2
640 376741767.7
660 365140974.9
680 352847834.1
700 339764457.8
720 325816004.1
740 310952563.6
760 271786784.1
780 222194537.8
800 185377726.5
820 154173430.2
840 130199325.7
860 111396817.2
880 96362607.14
900 84120129.15
920 73977044.17
940 65434357.46
960 58127235.93
980 51785717.25
1000 46208150.84
1020 41242936.22
1040 36775756.82
1060 32720505.36
1080 29012718.16
1090 27273687.16
1100 26355024.23
1120 22442026.84
1140 18753365.2
1160 15296510.38
1180 12079785.07
1200 9113113.474
1220 6409493.205
1240 3988344.555
1250 2893569.671
1255 2377978.33
1260 2323366.884
1280 2116912.621
1300 1928475.009
1320 1756577.201
1340 1599841.384
1360 1456985.125
1380 1326817.541
1400 1208235.326'
[]
#############################
[cp_factor]
type = ConstantFunction
value = 1.0
[]
[total_energy] #total Joules of energy injected into fuel during the RIA pulse
type = ConstantFunction
value = 30000
[]
[FWMH] #Full Width at Mid Height of RIA pulse
type = ConstantFunction
value = 0.03
[]
[fuel_OR] #Fuel outer radius
type = ConstantFunction
value = 0.00413
[]
##########################
[heat_generation] #A factor to multiply the pulse history to get desired energy/gram into the fuel
type = ParsedFunction
expression = 'energy / (pi * fuelradius * fuelradius * height) / pulsewidth'
symbol_names = 'height energy pulsewidth fuelradius'
symbol_values = '0.1 zz_total_energy zz_FWMH zz_fuel_OR'
[]
[power_ramp] #Transient power pulse applied to the fuel as a uniform heat generation term (W/m^3)
type = CompositeFunction
functions = 'power_history heat_generation'
scale_factor = 1.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_yy stress_zz vonmises_stress hoop_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_yy stress_zz plastic_strain_yy plastic_strain_zz elastic_strain_yy elastic_strain_zz strain_yy strain_zz vonmises_stress hoop_stress axial_stress'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = HeatSource
variable = temp
block = 'pellet'
function = power_ramp
value = 1.0
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_water_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_water_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_water_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_water_flux
boundary = 2
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
model = coulomb
friction_coefficient = 100
formulation = tangential_penalty
normalize_penalty = true
penalty = 1e12
normal_smoothing_distance = 0.1
tangential_tolerance = 1e-3
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
emissivity_primary = 0.797698
emissivity_secondary = 0.325
roughness_secondary = 0.1e-6 #roughness specified in benchmark
roughness_primary = 0.1e-6
roughness_coef = 3.2
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
contact_pressure = contact_pressure
normal_smoothing_distance = 0.1
quadrature = true
order = SECOND
[]
[]
[BCs]
[fixed_external_clad_temp]
type = FunctionDirichletBC
variable = temp
boundary = 1
function = temp_ramp
[]
[fixed_external_clad_temp_2]
type = FunctionDirichletBC
variable = temp
boundary = 3
function = temp_ramp
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = representative_plenum_temperature_node
volume = plenum_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
chf_correlation_type = 1 # EPRI
htc_correlation_type = 1 # Thom or McDonough... or Groenveld
boundary = '2'
variable = temp
coolant_material = 'water'
inlet_massflux = 3057.2 #kg/(m^2 s)
inlet_temperature = temp_ramp
inlet_pressure = pressure_ramp
compute_enthalpy = true
flow_area = 1.0731681e-4 #m^2
heated_diameter = 1.4536170e-2 #m
hydraulic_diameter = 5.6e-3 #m
heated_perimeter = 2.9530971e-2 #m
heat_transfer_mode = 0
number_axial_zone = 50
htc_scalef = 1
[]
[]
[Materials]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet'
temperature = temp
burnup = burnup
initial_porosity = 0.04
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
temperature = temp
block = pellet
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = pellet
temperature = temp
thermal_expansion_function = Fuel_CTE_function
stress_free_temperature = 293.15
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[density_clad]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temp
[]
[clad_youngs_modulus]
type = PiecewiseLinearInterpolationMaterial
block = clad
xy_data = ' 0 79375000000
300 79375000000
320 78280000000
340 77185000000
360 76090000000
380 74995000000
400 73900000000
420 72805000000
440 71710000000
460 70615000000
480 69520000000
500 68425000000
520 67330000000
540 66235000000
560 65140000000
580 64045000000
600 62950000000
620 61855000000
640 60760000000
660 59665000000
680 58570000000
700 57475000000
720 56380000000
740 55285000000
760 54190000000
780 53095000000
800 52000000000
820 50905000000
840 49810000000
860 48715000000
880 47620000000
900 46525000000
920 45430000000
940 44335000000
960 43240000000
980 42145000000
1000 41050000000
1020 39955000000
1040 38860000000
1060 37765000000
1080 36670000000
1090 36122500000
1100 36434621212
1120 37058863636
1140 37683106061
1160 38307348485
1180 38931590909
1200 39555833333
1220 40180075758
1240 40804318182
1250 41116439394
1255 41272500000
1260 41070000000
1280 40260000000
1300 39450000000
1320 38640000000
1340 37830000000
1360 37020000000
1380 36210000000
1400 35400000000'
property = clad_youngs_modulus
variable = temp
[]
[clad_elasticity_tensor]
type = ComputeVariableIsotropicElasticityTensor
block = clad
args = temp
youngs_modulus = clad_youngs_modulus
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'plasticity'
tangent_operator = elastic
[]
[clad_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = clad
temperature = temp
thermal_expansion_function = Clad_CTE_function
stress_free_temperature = 293.15
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = IsotropicPlasticityStressUpdate
block = clad
temperature = temp
hardening_constant = 2.5e9
yield_stress_function = YS_function
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-8
start_time = 0
end_time = 200
dtmax = 10
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 0.03
optimal_iterations = 25
iteration_window = 5
linear_iteration_ratio = 1000
growth_factor = 1.2
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[representative_plenum_temperature_node] #Temperature used for plenum gas, using a node slightly above where the fuel contacts the cladding
type = NodalVariableValue
variable = temp
nodeid = 771
execute_on = 'initial linear'
[]
[2_input_rod_power]
type = FunctionValuePostprocessor
function = power_history
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[3_fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 1643
execute_on = 'initial timestep_end'
[]
[4_fuel_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[5_clad_inner_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 496
execute_on = 'initial timestep_end'
[]
[6_clad_outer_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 509
execute_on = 'initial timestep_end'
[]
[clad_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 900
execute_on = 'initial timestep_end'
[]
[fuel_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 2311
execute_on = 'initial timestep_end'
[]
[clad_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = 496
execute_on = 'initial timestep_end'
[]
[fuel_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[clad_hoop_stress]
type = ElementalVariableValue
variable = hoop_stress
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_axial_stress]
type = ElementalVariableValue
variable = axial_stress
elementid = 149
execute_on = 'initial timestep_end'
[]
[total_hoop_strain]
type = ElementalVariableValue
variable = strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[total_axial_strain]
type = ElementalVariableValue
variable = strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
[plastic_hoop_strain]
type = ElementalVariableValue
variable = plastic_strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[plastic_axial_strain]
type = ElementalVariableValue
variable = plastic_strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
[elastic_hoop_strain]
type = ElementalVariableValue
variable = elastic_strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[elastic_axial_strain]
type = ElementalVariableValue
variable = elastic_strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
############################
[gap_cond]
type = ElementalVariableValue
variable = gap_cond
elementid = 499
execute_on = 'initial timestep_end'
[]
[coolant_temp]
type = ElementalVariableValue
variable = coolant_temp
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_water_flux]
type = ElementalVariableValue
variable = clad_water_flux
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_water_htc]
type = ElementalVariableValue
variable = clad_water_htc
elementid = 149
execute_on = 'initial timestep_end'
[]
[qpoint_penetration]
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 499
execute_on = 'initial timestep_end'
[]
[penetration]
type = NodalVariableValue
variable = penetration
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[zz_fuel_OR]
type = FunctionValuePostprocessor
function = fuel_OR
execute_on = 'initial timestep_end'
[]
[zz_total_energy]
type = FunctionValuePostprocessor
function = total_energy
execute_on = 'initial timestep_end'
[]
[zz_FWMH]
type = FunctionValuePostprocessor
function = FWMH
execute_on = 'initial timestep_end'
[]
[zz_cp_factor]
type = FunctionValuePostprocessor
function = cp_factor
execute_on = 'initial timestep_end'
[]
[zzz_heat_generation]
type = FunctionValuePostprocessor
function = heat_generation
execute_on = 'initial timestep_end'
[]
[zzzz_power_ramp]
type = FunctionValuePostprocessor
function = power_ramp
execute_on = 'initial timestep_end'
[]
[zzzzz_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0709016
temperature_name = temp
execute_on = 'initial timestep_end'
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = zzzzz_RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
outputs = dummy
execute_on = 'initial timestep_end'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
rod_component = CLAD ## Request only clad components because fission gas models are not used in this input file
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
exodus = true
color = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[dummy]
type = CSV
enable = false
[]
[chkfile]
type = CSV
show = 'plenum_temperature average_interior_clad_temperature plenum_volume peak_RAE'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM043/BFM043.i)
################################################################################
#
# Description: Calvert Cliffs BFM043
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM043_power.csv
# axial peaking factor file BFM043_axial_peaking.csv
# flux boundary condition file BFM043_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31834
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM043_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM043_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179369250 179369610'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179369250 179369610'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM043_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179369610
dtmax = 2.5e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/IFA_597_3/analysis/rod_7/IFA_597_rod7_frictionless.i)
initial_fuel_density = 10500.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 10
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ifa_597r7.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4'
initial_condition = 6.1074e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = 597-R7_linear_power.csv
format = columns
scale_factor = 1.0526316
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = 597-R7_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 269029548 269030508 269055648 269056588 280124964 280125427'
y = '0 1 1 0.014475 0.014475 0.457 0.457 0.014475'
[]
[flux]
type = PiecewiseLinear
data_file = flux.csv
format = columns
[]
[clad_average_temp]
type = PiecewiseLinear
data_file = 597-R7_clad_outer_temperature.csv
format = columns
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = '3 4'
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3 4'
fission_rate = fission_rate
fraction = 0.95 # per Glyn Rossiter's suggestion
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = '3 4'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.3571
fuel_inner_radius = 0.000
fuel_outer_radius = 0.0052195
fuel_volume_ratio = .994899
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.03347 0.96653 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = 1.3e-6
roughness_primary = 1.38e-6
roughness_coef = 3.2
contact_pressure = contact_pressure
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 269055648
refab_gas_types = He
refab_fractions = 1
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_average_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 #changes to 3.2e6 after 59 MWd/kgUO2
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e5 #changes to 5e5 after 59 MWd/kgUO2
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 269055648
refab_pressure = 5e5
refab_temperature = 500
refab_volume = 6e-6
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4'
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10500.0
[]
[fuel_thermal]
type = UO2Thermal
block = '3 4'
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
initial_porosity = 0.04372
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = '3 4'
temperature = temp
stress_free_temperature = 297
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4'
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4'
burnup_function = burnup
diameter = 0.010439
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.11e-4
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 297
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.04372
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
[]
[density_clad]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = '3 4'
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 280125427
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 20
linear_iteration_ratio = 100
dt = 100
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3 4'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3 4'
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = exodus
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = exodus
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3 4'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.3539 # rod height
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_profile
fuel_outer_radius = 0.0052195
fuel_inner_radius = 0.000
outputs = exodus
[]
[power_tc_location]
type = FunctionValuePostprocessor
function = q
point = '0 0.33319 0'
[]
[TC_temp]
type = NodalVariableValue
variable = temp
nodeid = 7476 # Global NodeID 7477
[]
[elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 1887 # Global NodeID 1888
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = '3 4'
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage TC_temp rod_total_power elongation'
execute_on = 'FINAL'
[]
[]
(workshop/bison_example/Discrete_mortar.i)
[GlobalParams]
density = 10431.0
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
family = LAGRANGE
order = SECOND
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = discrete.e
type = FileMeshGenerator
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temperature]
initial_condition = 295.0
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temperature
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
temperature = temperature
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fis_gas_released
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = 1e+11
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.03
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-4
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2369
[]
[fuel_surface_mid_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2887
[]
[fuel_surface_ridge_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2862
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 7322
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 2887
[]
[penetration_ridge]
type = NodalVariableValue
variable = penetration
nodeid = 2862
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/TRISO/accident_simulation/triso2D_accident.i)
# This example is 2D-RZ analysis of a TRISO fuel particle. Fully coupled
# heat transfer and solid mechanics, plus diffusion of the fission product
# species cesium (Cs) are simulated. The mesh includes contact surfaces
# between the buffer and IPyC layers to facilitate a gap opening between
# these layers. These surfaces are initially in mechanical contact but
# are assumed to have no strength in tension. A coarse mesh is used to
# provide a short run time.
# The calculation simulates fuel-life in three steps. The first step is an
# irradiation period, where constant power and a fixed particle surface
# temperature (1500 K) are assumed over a lifetime of 76 Ms (2.4 yrs).
# For the second step, fuel removal and storage are simulated by setting
# the reactor power and Cs source terms to zero, reducing the particle
# surface temperature to ambient (300 K), and then holding it
# for 100 days. A third and final step simulates accident
# behavior by increasing the particle surface temperature from ambient
# to 2073 K over 2 hrs, and then holding it at this elevated temperature
# for an additional 200 hrs. At the particle outer boundary, the Cs
# concentration is held at zero and the pressure at ambient during the
# entire simulation. The particle is assumed to be stress-free at an
# initial temperature of 1500 K.
#
# Details about this simulation are given in Section 4 of the following
# article: J. D. Hales, R. L. Williamson, S. R. Novascone, D. M. Perez,
# B. W. Spencer and G. Pastore, "Multidimensional multiphysics simulation
# of TRISO particle fuel", Journal of Nuclear Materials, Vol. 443, p. 531,
# 2013.
initial_fuel_density = 11000.0
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
flux_conversion_factor = 0.85
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = triso2Dmed.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 1500.0
[]
[conc]
initial_condition = 0.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fluence]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gap_condSlave]
order = CONSTANT
family = MONOMIAL
[]
[creep_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[d_gap]
type = PiecewiseLinear
x = '1500 2100'
y = '1e-14 1e-12'
[]
[integral_flux_error]
type = ParsedFunction
symbol_names = 'buffer_integral_flux IPyC_integral_flux'
symbol_values = 'buffer_integral_flux IPyC_integral_flux'
expression = 'IPyC_integral_flux + buffer_integral_flux'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress'
strain = FINITE
incremental = true
add_variables = false
[default]
block = 'fuel buffer IPyC OPyC'
eigenstrain_names = 'thermal_strain swelling_strain'
extra_vector_tags = 'ref'
[]
[SiC]
block = 'SiC'
eigenstrain_names = 'thermal_strain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = TimeDerivative
variable = conc
extra_vector_tags = 'ref'
[]
[mass]
type = ArrheniusDiffusion
variable = conc
extra_vector_tags = 'ref'
[]
[mass_source]
type = BodyForce
variable = conc
function = power_history
value = 1.22e-5 # units of moles/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = fuel
fission_rate_function = power_history
value = 3.89e19
execute_on = timestep_begin
[]
[fluence]
type = MaterialRealAux
property = fast_neutron_fluence
variable = fluence
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
execute_on = timestep_begin
density = ${initial_fuel_density}
[]
[creep_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_xx
index_i = 0
index_j = 0
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_yy
index_i = 1
index_j = 1
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_zz
index_i = 2
index_j = 2
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[conductanceSlave]
type = MaterialRealAux
property = gap_conductance
variable = gap_condSlave
boundary = BufferGapBndry
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
penalty = 1e5
model = frictionless
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 15
secondary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
gap_geometry_type = CYLINDER
tangential_tolerance = 1e-6
roughness_coef = 0.0
quadrature = true
[]
[cesium_contact]
type = GapHeatTransfer
variable = conc
primary = 15
secondary = 17
tangential_tolerance = 1e-6
gap_conductivity_function = d_gap
gap_conductivity_function_variable = temp
appended_property_name = _conc
emissivity_primary = 0
emissivity_secondary = 0
quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
extra_vector_tags = 'ref'
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
extra_vector_tags = 'ref'
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temp
boundary = exterior
function = temp_bc
extra_vector_tags = 'ref'
[]
# fix concentration on free surface
[freesurf_conc]
type = DirichletBC
variable = conc
boundary = exterior
value = 0.0
extra_vector_tags = 'ref'
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 0
startup_time = 1.0e4
R = 8.3145
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 5e17
[]
[fission_gas_release] # Sifgrs fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temp
burnup = burnup
eigenstrain_name = 'swelling_strain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel'
[]
[fuel_elasticity]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = .345
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density} # kg/m^3
[]
[fuel_conc]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_eigenstrain]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = 'swelling_strain'
[]
[buffer_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[buffer_elasticity]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e10
poissons_ratio = .23
[]
[buffer_stress]
type = PyCCreep
block = buffer
temperature = temp
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_conc]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[IPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[IPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[IPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[IPyC_disp]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temp
[]
[IPyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = StrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1900.0
[]
[IPyC_conc]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8
q1 = 222.0e+3
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_elasticity]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = .13
[]
[SiC_creep]
type = MonolithicSiCCreepUpdate
block = SiC
temperature = temp
k_function = k_function
[]
[SiC_stress]
type = ComputeMultipleInelasticStress
block = SiC
tangent_operator = elastic
inelastic_models = 'SiC_creep'
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_conc]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[OPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[OPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[OPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[OPyC_conc]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[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'
nl_rel_tol = 5e-4
nl_abs_tol = 1e-9
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 85.3682e6
dt = 100
dtmax = 2e6
dtmin = 1
automatic_scaling = true
compute_scaling_once = false
scaling_group_variables = 'conc; disp_x disp_y; temp'
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
growth_factor = 1.5
linear_iteration_ratio = 100
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
[]
[Predictor]
type = SimplePredictor
scale = 1
skip_times_old = '0 76e6 76.001e6 84.641e6 84.6482e6'
[]
[Quadrature]
order = THIRD
side_order = FIFTH
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
sync_times = '100 6308007 75696087'
sync_only = true
[]
[]
[Postprocessors]
[Cs_release]
type = SideIntegralMassFlux
variable = conc
boundary = exterior
execute_on = timestep_end
[]
[dt]
type = TimestepSize
execute_on = timestep_end
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
# ro = 3.125e-4
# ri = 2.125e-4
# vb = 4/3*pi*(ro^3-ri^3) = 8.76e-11
# buffer density = 1000
# PyC density = 1900
# fill ratio = 10/19
# vb*10/19 = 4.6e-11
# Must remove 4.6e-11 m^3 from the volume
addition = -4.6e-11
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[buffer_avg_conc]
type = SideAverageValue
variable = conc
boundary = 17
[]
[IPyC_avg_conc]
type = SideAverageValue
variable = conc
boundary = 15
[]
[buffer_integral_flux]
type = SideIntegralMassFlux
variable = conc
boundary = 17
[]
[IPyC_integral_flux]
type = SideIntegralMassFlux
variable = conc
boundary = 15
[]
[integral_flux_error]
type = FunctionValuePostprocessor
function = integral_flux_error
[]
[integral_Cs_release]
type = TimeIntegratedPostprocessor
value = Cs_release
[]
[Cs_production]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.22e-5 # units of moles/m**3-s
[]
[time_integral_Cs_production]
type = TimeIntegratedPostprocessor
value = Cs_production
[]
[volumeFuel_initial]
type = InternalVolume
boundary = fuel
execute_on = initial
[]
[integral_Cs_production]
type = ParsedPostprocessor
pp_names = 'time_integral_Cs_production volumeFuel_initial'
expression = 'time_integral_Cs_production * volumeFuel_initial'
[]
[Cs_release_fraction]
type = ParsedPostprocessor
pp_names = 'integral_Cs_release integral_Cs_production'
expression = 'integral_Cs_release / integral_Cs_production'
[]
[]
[VectorPostprocessors]
[temperaturevpp]
type = SideValueSampler
boundary = 11
variable = temp
sort_by = x
outputs = 'csv'
use_displaced_mesh = true
[]
[]
(test/tests/triso/base_irradiation/triso1D_accident.i)
initial_fuel_density = 11000.0
[GlobalParams]
density = ${initial_fuel_density} # kg/m^3
order = SECOND
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[mesh]
type = FileMeshGenerator
file = triso1DFineTruss3.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1500.0
[]
[conc_Cs]
initial_condition = 0.0
scaling = 1e18
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_fluence]
order = CONSTANT
family = MONOMIAL
[]
[gap_condSlave]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[fission_rate]
type = LinearCombinationFunction
functions = power_history
w = 3.89e19
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[d_gap]
type = PiecewiseLinear
x = '1500 2100'
y = '1e-14 1e-12'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_swelling'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[buffer]
block = buffer
add_variables = false
strain = FINITE
eigenstrain_names = 'buffer_thermal_strain buffer_eigenstrain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[IPyC]
block = IPyC
add_variables = false
strain = FINITE
eigenstrain_names = 'IPyC_eigenstrain IPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[SiC]
block = SiC
add_variables = false
strain = FINITE
eigenstrain_names = 'SiC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[OPyC]
block = OPyC
add_variables = false
strain = FINITE
eigenstrain_names = 'OPyC_eigenstrain OPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = TimeDerivative
variable = conc_Cs
extra_vector_tags = 'ref'
[]
[mass]
type = ArrheniusDiffusion
variable = conc_Cs
extra_vector_tags = 'ref'
[]
[mass_source]
type = BodyForce
variable = conc_Cs
function = power_history
value = 1.22e-5 # units of mol/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc_Cs
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = MaterialRealAux
variable = fission_rate
property = fission_rate
block = fuel
execute_on = timestep_begin
[]
[burnup]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mol
block = fuel
execute_on = timestep_begin
[]
[fast_neutron_flux]
type = MaterialRealAux
variable = fast_neutron_flux
property = fast_neutron_flux
block = 'fuel buffer IPyC SiC OPyC'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = MaterialRealAux
variable = fast_neutron_fluence
property = fast_neutron_fluence
block = 'fuel buffer IPyC SiC OPyC'
execute_on = timestep_begin
[]
[conductanceSlave]
type = MaterialRealAux
property = gap_conductance
variable = gap_condSlave
boundary = BufferGapBndry
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 15
secondary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
roughness_primary = 0e-6
roughness_secondary = 0e-6
jumpdistance_primary = 0
jumpdistance_secondary = 0
quadrature = true
emissivity_secondary = 0.0
emissivity_primary = 0.0
min_gap = 1e-7
max_gap = 50e-6
gap_geometry_type = sphere
[]
[cesium_contact]
type = GapHeatTransfer
variable = conc_Cs
primary = 15
secondary = 17
tangential_tolerance = 1e-6
gap_conductivity_function = d_gap
gap_conductivity_function_variable = temperature
appended_property_name = _conc
quadrature = true
gap_geometry_type = sphere
emissivity_primary = 0.0
emissivity_secondary = 0.0
min_gap = 1e-7
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temperature
boundary = exterior
function = temp_bc
[]
# fix concentration on free surface
[freesurf_conc]
type = DirichletBC
variable = conc_Cs
boundary = exterior
value = 0.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply plenum pressure on clad inner walls and pellet surfaces
[PlenumPressure]
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 100
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = fission_rate
prop_values = fission_rate
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
flux_function = power_history
factor = 5e17
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temperature
burnup = burnup
eigenstrain_name = fuel_swelling
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
[]
[fuel_conc]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temperature
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2.0e10
poissons_ratio = 0.23
[]
[buffer_stress]
type = PyCCreep
block = buffer
flux_conversion_factor = 1.0
temperature = temperature
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = buffer_thermal_strain
[]
[buffer_irraditation]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = buffer_eigenstrain
[]
[buffer_conc]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
temperature = temperature
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = 0.23
[]
[IPyC_stress]
type = PyCCreep
block = IPyC
flux_conversion_factor = 1.0
temperature = temperature
[]
[IPyC_temp]
type = HeatConductionMaterial
block = IPyC
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[IPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0 # kg/m^3
block = IPyC
[]
[IPyC_densification]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = IPyC_eigenstrain
[]
[IPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = IPyC_thermal_strain
[]
[IPyC_conc]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
temperature = temperature
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = 0.13
[]
[monolithic_SiC_creep]
type = MonolithicSiCCreepUpdate
block = SiC
fast_neutron_flux = fast_neutron_flux
temperature = temperature
k_function = k_function
[]
[stress]
type = ComputeMultipleInelasticStress
inelastic_models = monolithic_SiC_creep
block = SiC
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = SiC_thermal_strain
[]
[SiC_conc]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fast_neutron_fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
temperature = temperature
[]
[OPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = 0.23
[]
[OPyC_stress]
type = PyCCreep
block = OPyC
flux_conversion_factor = 1.0
temperature = temperature
[]
[OPyC_temp]
type = HeatConductionMaterial
block = OPyC
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[OPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0 # kg/m^3
block = OPyC
[]
[OPyC_densification]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = OPyC_eigenstrain
[]
[OPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = OPyC_thermal_strain
[]
[OPyC_conc]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
temperature = temperature
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[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'
nl_rel_tol = 5e-8
nl_abs_tol = 1e-7
nl_max_its = 15
l_tol = 1e-8
l_max_its = 50
start_time = 0.0
#end_time = 85.3682e6
end_time = 1e3
num_steps = 1000
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
growth_factor = 1.5
optimal_iterations = 8
linear_iteration_ratio = 100
[]
[Quadrature]
order = THIRD
[]
[]
[Postprocessors]
[release_Cs_inc]
type = SideIntegralMassFlux
variable = conc_Cs
boundary = exterior
[]
[Int_Cs_release]
type = TimeIntegratedPostprocessor
value = release_Cs_inc
[]
[release_fuel_Cs]
type = SideIntegralMassFlux
variable = conc_Cs
boundary = fuel
[]
[Int_Cs_release_fuel]
type = TimeIntegratedPostprocessor
value = release_fuel_Cs
[]
[release_PyCGapBndry_Cs]
type = SideIntegralMassFlux
variable = conc_Cs
boundary = PyCGapBndry
[]
[Int_Cs_release_PyCGapBndry]
type = TimeIntegratedPostprocessor
value = release_PyCGapBndry_Cs
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = linear
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = linear
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
addition = -4.6e-11
execute_on = 'initial linear'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
outputs = exodus
execute_on = 'initial linear'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
outputs = exodus
execute_on = 'initial timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
outputs = exodus
execute_on = 'initial timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial nonlinear'
[]
[]
[Outputs]
print_linear_residuals = false
[console]
type = Console
max_rows = 5
outlier_variable_norms = false
[]
[exodus]
type = Exodus
file_base = triso1D_accident_out
[]
[]
(test/tests/ifba_he_production/doc/fill_gas_xenon.i)
#
# 2-D RZ One Pellet Test - Using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas.
#
# This model results in a upper limit for the interior_temp due to the type of
# fill gas used.
#
[GlobalParams]
density = 10431.0 #95% TD (TD = 10980)
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 4
nx_p = 6
nx_c = 3
ny_cu = 3
ny_c = 4
ny_cl = 3
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
displacements = 'disp_x disp_y'
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = '3'
initial_condition = 5e-6 # must be the same as the initial value in Sifgr
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = '3'
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# CoolantChannel requires this to have units while axial_peaking_factors must be normalized.
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[q] # this is for fuel_relocation
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[SolidMechanics]
[solid]
temperature = temp
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
#convert W/m from power profile to fission/m**3-s
#calculated as 1/(energy_per_fission*area)
#using energy_per_fission = 3.2e-11, consistent with 200 MeV/fission
value = 5.3548e+14
fission_rate_function = q
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
# If you divide flux/power, you get this constant factor
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = '3'
variable = gas_swell
property = deltav_v0_bd
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
# pin entire clad bottom in y
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in y
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
# pin fuel axis in x and z
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = fis_gas_released
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_swelling]
type = VSwellingUO2
block = '3'
temperature = temp
burnup = burnup
gas_swelling_type = sifgrs
[]
[fuel_solid_mechanics_elastic]
type = Elastic
block = '3'
temperature = temp
youngs_modulus = 2.e11
poissons_ratio = 0.345
thermal_expansion = 10.0e-6
dep_matl_props = deltav_v0_bd
[]
[fission_gas_release]
type = Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_solid_mechanics]
type = SolidModel
block = 1
temperature = temp
youngs_modulus = 7.5e10
poissons_ratio = 0.3
thermal_expansion = 5.0e-6
constitutive_model = clad_plasticity
[]
[clad_growth]
type = IrradiationGrowthZr4
block = 1
fast_neutron_fluence = fast_neutron_fluence
growth_direction = 1
[]
[clad_plasticity]
type = IsotropicPlasticity
block = 1
temperature = temp
yield_stress = 550e6
hardening_constant = 2.5e9
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 25.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x'
off_diag_column = 'disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 2.0e7 # Stop run before contact between pellet and clad occurs
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/scaled_swelling.i)
# @Requirement F2.20
# Test of combined swelling and densification (1000K) with scaling factors on
# the solid and gaseous swelling strain components. These scaling factors are
# available for calibration and sensitivity analyses.
#
# In this test the burnup of the fuel is increased from 0 to 0.05 FIMA. The
# correct use of scaling factors on both the solid and gaseous swelling strains
# is verified by comparing the gas_swelling and solid_swelling columns in the
# postprocessor tables from the swelling.i test in this directory shown below:
# Burnup Densfication Gaseous Swelling Solid Swelling Volumetric Swelling
# (FIMA) Strain (/) Strain (/) Strain (/) Strain (/)
#-------------------------------------------------------------------------------
# 0 0 0 0 0
# 0.005 -9.739705e-03 1.338712e-04 2.908406e-03 -6.697429e-03
# 0.010 -9.993225e-03 1.867821e-04 5.816811e-03 -3.989632e-03
# 0.015 -9.999824e-03 2.076944e-04 8.725217e-03 -1.066913e-03
# 0.020 -9.999995e-03 2.159597e-04 1.163362e-02 1.849586e-03
# 0.025 -1.000000e-02 2.192265e-04 1.454203e-02 4.761254e-03
# 0.030 -1.000000e-02 2.205176e-04 1.745043e-02 7.670951e-03
# 0.035 -1.000000e-02 2.210279e-04 2.035884e-02 1.057987e-02
# 0.040 -1.000000e-02 2.212296e-04 2.326724e-02 1.348847e-02
# 0.045 -1.000000e-02 2.213093e-04 2.617565e-02 1.639696e-02
# 0.050 -1.000000e-02 2.213408e-04 2.908406e-02 1.930540e-02
#
# To the postprocessor columns from this test illustrated in the next table.
# Both the gaseous swelling strain and solid swelling strain should be 1.2 times
# the value in the table above. The volumetric swelling strain in both cases is
# the sum of the densification, gaseous swelling and solid swelling strains:
#
# deltaV/V = densification strain + gaseous swelling strain + solid swelling strain
#
# which is verified by the volumetric swelling strain column. The results in the
# table verify that a scaling factor of 1.2 on both solid and gaseous swelling
# strain components is working correctly.
#
# Burnup Densfication Gaseous Swelling Solid Swelling Volumetric Swelling
# (FIMA) Strain (/) Strain (/) Strain (/) Strain (/)
#-------------------------------------------------------------------------------
# 0 0 0 0 0
# 0.005 -9.739705e-03 1.606455e-04 3.490087e-03 -6.088973e-03
# 0.010 -9.993225e-03 2.241385e-04 6.980173e-03 -2.788913e-03
# 0.015 -9.999824e-03 2.492333e-04 1.047026e-02 7.196694e-04
# 0.020 -9.999995e-03 2.591516e-04 1.396035e-02 4.219503e-03
# 0.025 -1.000000e-02 2.630718e-04 1.745043e-02 7.713505e-03
# 0.030 -1.000000e-02 2.646211e-04 2.094052e-02 1.120514e-02
# 0.035 -1.000000e-02 2.652335e-04 2.443061e-02 1.469584e-02
# 0.040 -1.000000e-02 2.654755e-04 2.792069e-02 1.818617e-02
# 0.045 -1.000000e-02 2.655712e-04 3.141078e-02 2.167635e-02
# 0.050 -1.000000e-02 2.656090e-04 3.490087e-02 2.516647e-02
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'fuelthermal_strain swell'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
density_name = 'reg_density'
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.05'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[solid_swell]
type = ADMaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[gas_swell]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[densification]
type = ADMaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_swelling_strain]
type = ADMaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
solid_swelling_scale_factor = 1.2
gaseous_swelling_scale_factor = 1.2
total_densification = 0.01
eigenstrain_name = swell
initial_fuel_density = 10430.0
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = '1 2 3 4 5 6 7'
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1000.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[density]
type = ADStrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10430.0
[]
[converter]
type = MaterialADConverter
ad_props_in = 'density'
reg_props_out = 'reg_density'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
[]
[densification]
type = ElementAverageValue
variable = densification
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
[]
[]
[Outputs]
exodus = true
file_base = scaled_swelling_out
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL031/BFL031.i)
################################################################################
#
# Description: Calvert Cliffs BFL031
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFL031_power.csv
# axial peaking factor file BFL031_axial_peaking.csv
# flux boundary condition file BFL031_fast_flux.csv
#
################################################################################
initial_fuel_density = 10460.45
[GlobalParams]
density = ${initial_fuel_density} #95.332 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
patch_size = 20
patch_update_strategy = auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[mesh]
type = FileMeshGenerator
file = BFL031_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFL031_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFL031_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 174660997 174661357'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 174660997 174661357'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFL031_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0013589
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '9 13' # clad interior + fuel exterior
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[oxidationcladding]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 174661357
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_2984]
type = NodalVariableValue
nodeid = 2983
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/uo2_thermal/FinkLucuta/ad_test.i)
# This test case is prepared to test the thermal conductivity using the Fink-Lucuta model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the Fink-Lucuta UO2
# thermal conductivity model.
# The BISON predictions (BISON_k) compared to the expected results (expected_k)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error
# 4.867402805 4.867402805 7.33E-13
# 4.720864316 4.720864316 3.00E-13
# 4.582724238 4.582724238 2.11E-13
# 4.452567611 4.452567611 7.55E-13
# 4.329714424 4.329714424 -5.33E-13
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = ADBurnupAux
variable = burnup
density = 10431.0 # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = ADFunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = FINK_LUCUTA
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ADParsedMaterial
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/triso_failure/triso_1d_layer_stress_strength.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[ipyc_stress_strength]
type = ParsedFunction
expression = 'a-b'
symbol_names = 'a b'
symbol_values = 'stress_IPyC actual_strength_IPyC'
[]
[opyc_stress_strength]
type = ParsedFunction
expression = 'a-b'
symbol_names = 'a b'
symbol_values = 'stress_OPyC actual_strength_OPyC'
[]
[sic_crackedipyc_stress_strength]
type = ParsedFunction
expression = 'a-b'
symbol_names = 'a b'
symbol_values = 'stress_SiC_crackedIPyC actual_strength_SiC_crackedIPyC'
[]
[sic_crackedopyc_stress_strength]
type = ParsedFunction
expression = 'a-b'
symbol_names = 'a b'
symbol_values = 'stress_SiC_crackedOPyC actual_strength_SiC_crackedOPyC'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
use_automatic_differentiation = true
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[stress_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
output_type = 'stress'
[]
[actual_strength_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
output_type = 'strength'
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[stress_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
output_type = 'stress'
[]
[actual_strength_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
output_type = 'strength'
[]
[IPyC_stressminusstrength]
type = FunctionValuePostprocessor
function = 'ipyc_stress_strength'
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[stress_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
output_type = 'stress'
[]
[actual_strength_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
output_type = 'strength'
[]
[OPyC_stressminusstrength]
type = FunctionValuePostprocessor
function = 'opyc_stress_strength'
[]
[stress_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
output_type = 'stress'
[]
[actual_strength_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
output_type = 'strength'
[]
[SiC_crackedIPyC_stressminusstrength]
type = FunctionValuePostprocessor
function = 'sic_crackedipyc_stress_strength'
[]
[stress_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
output_type = 'stress'
[]
[actual_strength_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
output_type = 'strength'
[]
[SiC_crackedOPyC_stressminusstrength]
type = FunctionValuePostprocessor
function = 'sic_crackedopyc_stress_strength'
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/uo2_thermal/HBSporosity/ad_test.i)
# This test case is prepared to test the thermal conductivity using the Halden model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# We employ an artificial porosity shape that varies from 0.05 (initial_porosity) to around 0.13.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the Halden UO2 thermal
# conductivity model. Two different porosity correction methods (the Kampf and Lee models)
# are employed to compute the HBS thermal conductivity.
# The BISON predictions (BISON_k) compared to the expected results (exp_k)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# exp_k_lee BISON_k_lee percent_error_lee exp_k_kampf BISON_k_kampf percent_error_kampf
# 1.923374665 1.923374674 -4.64E-07 1.923070652 1.92307065 8.73E-08
# 1.912817787 1.912817795 -4.58E-07 1.912332564 1.912332562 1.30E-07
# 1.903379731 1.90337974 -4.53E-07 1.902763112 1.902763108 1.61E-07
# 1.895060193 1.895060202 -4.48E-07 1.894338874 1.89433887 1.85E-07
# 1.887861419 1.887861427 -4.44E-07 1.887052808 1.887052804 2.05E-07
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[effective_burnup]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = ADBurnupAux
variable = burnup
density = 10431.0 # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = ADFunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermalUO2]
type = ADUO2Thermal
temperature = T
burnup = burnup
initial_porosity = 0.05
thermal_conductivity_model = HALDEN
oxy_to_metal_ratio = 2.0
Gd_content = 0.0
[]
[density]
type = ADParsedMaterial
property_name = density
expression = 10431.0
[]
[HBS_volume_fraction]
type = ADHighBurnupStructureFormation
burnup = burnup
temperature = T
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_effective_burnup]
type = ADElementIntegralMaterialProperty
mat_prop = effective_burnup
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
file_base = 'ad_test_default'
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFG092/BFG092.i)
################################################################################
#
# Description: Calvert Cliffs BFG092
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFG092_power.csv
# axial peaking factor file BFG092_axial_peaking.csv
# flux boundary condition file BFG092_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28354
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFG092_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFG092_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177711767 177712127'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177711767 177712127'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFG092_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177712127
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/uo2_thermal/NFImod/test.i)
# This test case is prepared to test the thermal conductivity using the Modified NFI model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the NFI modified thermal conductivity model.
# The BISON predictions (BISON_k) compared to the expected results (expected_k)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error
# 5.945042197 5.945042197 -8.22E-13
# 5.540026353 5.540026353 1.11E-13
# 5.252676996 5.252676996 -9.33E-13
# 4.995664905 4.995664905 8.66E-13
# 4.7632267 4.7632267 -1.33E-13
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate n/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = BurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermalUO2]
type = UO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = MODIFIED_NFI
Gd_content = 0.00
initial_porosity = 0.05
oxy_to_metal_ratio = 2.0
[]
[density]
type = ParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/ThermalFuel_error_messages/porosity_error.i)
#Error testing when porosity as a coupled variable and a material property are both defined.
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 0.001
ymax = 0.001
[]
[]
[Variables]
[temp]
initial_condition = 200
[]
[]
[AuxVariables]
[burnup]
[]
[porosity]
[]
[porosity_material]
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[heat_source]
type = HeatSource
variable = temp
value = 1e10
[]
[]
[AuxKernels]
[burnup]
type = ConstantAux
variable = burnup
value = 0.01
[]
[porosity]
type = ConstantAux
variable = porosity
value = 0.001
[]
[porosity_material]
type = MaterialRealAux
variable = porosity_material
[]
[]
[Materials]
[heat_conductor]
type = UO2Thermal
block = 0
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
initial_porosity = 0.001
porosity = porosity
porosity_material = true
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left right'
value = 200
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = false
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/solid_swelling_only.i)
#
# Test of fission product swelling - solid only
#
# With a burnup of 0.01719, the volumetric strain should be 0.01.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'swelling_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.01719'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[total_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[total_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[total_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
eigenstrain_name = swelling_strain
initial_fuel_density = 10430.0
include_densification = false
include_gas_swelling = false
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
end_time = 1.0
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
[]
[total_strain_xx]
type = ElementAverageValue
variable = total_strain_xx
[]
[total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
[]
[total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
file_base = solid_only_out
[]
(assessment/LWR/validation/RE_Ginna_Rodlets/analysis/RE_Ginna_Rodlets_Base.i)
# This file contains all characteristics common to the entire assessment
# NOTE: It requires information contained in rod-specific input files and is therefore not designed to run
# on its own
# Fuel material properties
initial_fuel_density = 10321.2 # kg/m^3 (94% TD = 10980 kg/m^3)
fuel_thermal_expansion_coeff = 10.0e-6 # K^-1
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_density = 6551.0 # kg/m^3
# Rod geometry
a_lower = 0.00324 # m
a_upper = 0.545022 # m
fuel_outer_radius = 0.0044515 # m
fuel_volume_ratio = 1.0 # (-)
fuel_diameter = 0.008903 # m
diametral_gap = 1.9e-4 # m
# Neutronics, power, and isotope fractions
energy_per_fission = 3.2e-11 # J/fission
fast_neutron_flux_factor = 4.8e17 # n/m^2-s
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Temperature conditions
initial_temperature = 293.0 # K
stress_free_temperature = 293.0 # K
# Contact
contact_penalty = 1e14 # (-)
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
# Relocation
relocation_activation1 = 5000 # W/m
# Coolant pressure ramp parameters
pressure_ramp_factor = 15.51e6 # (-)
# Plenum parameters
initial_plenum_pressure = 2.1e6 # Pa
startup_time = 0 # s
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-K
# Numerical options
l_max_its = 100
l_tol = 8e-3
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100 # s
dtmax = 1e6 # s
dtmin = 1 # s
TimeStepper_dt = 1e2
TimeStepper_linear_iteration_ratio = 100
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = ${clad_blockid}
[]
[fast_neutron_fluence]
block = ${clad_blockid}
[]
[grain_radius]
block = ${fuel_blockid}
initial_condition = ${initial_grain_radius}
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = ${axial_peaking_data_file}
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[flux]
type = PiecewiseLinear
data_file = ${flux_data_file}
format = columns
[]
[clad_temperature_bc]
type = PiecewiseBilinear
data_file = ${clad_temperature_bc_data_file}
axis = 1
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = ${fuel_blockid}
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = ${clad_blockid}
axial_power_profile = axial_peaking_factors
function = flux
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = ${fuel_blockid}
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = ${clad_blockid}
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = ${fuel_blockid}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
model = frictionless
normalize_penalty = true
penalty = ${contact_penalty}
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
quadrature = true
[]
[]
[BCs]
[clad_surface_temperature]
type = FunctionDirichletBC
boundary = ${clad_surface_temperature_boundary}
variable = temperature
function = clad_temperature_bc
[]
[Pressure]
[coolantPressure]
boundary = ${coolantPressure_boundary}
factor = ${pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = ${PP_temperature}
volume = ${PP_volume}
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = ${fuel_blockid}
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ${fuel_elasticity_tensor_type}
block = ${fuel_blockid}
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = ${fuel_blockid}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = ${fuel_blockid}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = ${fuel_thermal_expansion_eigenstrain_name}
[]
[fuel_relocation] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = ${fuel_blockid}
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
burnup_relocation_stop = ${burnup_relocation_stop}
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = ${fuel_blockid}
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = ${fuel_volumetric_swelling_eigenstrain_name}
[]
[fuel_density]
type = StrainAdjustedDensity
block = ${fuel_blockid}
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = ${fuel_blockid}
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = ${clad_blockid}
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = ${clad_blockid}
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = ${clad_stress_inelastic_models}
block = ${clad_blockid}
[]
[clad_creep] # creep for zircaloy cladding
type = ZryCreepLimbackHoppeUpdate
block = ${clad_blockid}
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[clad_thermal_expansion]
type = ${clad_thermal_expansion_type}
block = ${clad_blockid}
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = ${clad_thermal_expansion_eigenstrain_name}
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = ${clad_blockid}
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = ${clad_blockid}
strain_free_density = ${cladding_density}
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = ${verbose_option}
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
optimal_iterations = ${TimeStepper_optimal_iterations}
iteration_window = ${TimeStepper_iteration_window}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[max_fuel_temperature]
type = NodalExtremeValue
block = ${fuel_blockid}
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_fuel_temperature]
type = NodalExtremeValue
block = ${fuel_blockid}
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temperature]
type = NodalExtremeValue
block = ${clad_blockid}
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temperature]
type = NodalExtremeValue
block = ${clad_blockid}
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ${fis_gas_grain_Postpro_type}
block = ${fuel_blockid}
outputs = exodus
[]
[fis_gas_boundary]
type = ${fis_gas_boundary_Postpro_type}
block = ${fuel_blockid}
outputs = exodus
[]
[flux_from_clad]
type = ${clad_flux_Postpro_type}
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = ${fuel_flux_Postpro_type}
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = ${fuel_blockid}
variable = fission_rate
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 40
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(assessment/LWR/validation/HBEP/analysis/BK365/HBEP_BK365.i)
initial_fuel_density = 10233
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = HBEP.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[disp_r]
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = BK365_linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK365_power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 137115360 137118960'
y = '0.007382 1 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = BK365_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = BK365_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK365_clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
num_radial = 80
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = '1'
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_hoop]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
index_i = 2
index_j = 2
execute_on = timestep_end
block = 1
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.88e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =1.7e-4 #diameteral gap
relocation_activation1 = 5000 # initial relocation activation power set to 5kW/m
burnup_relocation_stop = .04
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 50
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 137118960
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 2e6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.017 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[]
[VectorPostprocessors]
[Concentrations]
type = RadialProfileSampler
variable = 'disp_x'
sort_by = 'id'
burnup_function = burnup
quantity = 'N235 N236 N238 N239 N240 N241 N242 ntot_hm'
height = 0.46324
execute_on = timestep_end
outputs = 'Concentrations'
[]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242'
height = 0.46324
burnup_function = burnup
outputs = 'True'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[Concentrations]
type = CSV
file_base = 'Concentrations/'
[]
[True]
type = CSV
file_base = 'True/'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/IFA_515_RodA1/analysis/IFA515.i)
# Reference document HWR-671
# Block 1 = cladding, Block 3 and 5 = insulators Block 4 = fuel
id = IFA515
# Fuel material properties
initial_fuel_density = 10628.64 # kg/m^3 # initial fuel density 96.8% of theoretical (10980 kg/m3)
initial_grain_radius = 7.75e-6 # m [(18.1+13.1+15.3)/(3*2)]
initial_fuel_porosity = 0.032 # (-)
fuel_thermal_expansion_coeff = 10e-6 # K^-1
# Insulator material properties
insulator_burnup_function = 0 # (-)
insulator_thermal_expansion_coeff = 10e-6 # K^-1
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_youngs_modulus = 8.8e10 # Pa
cladding_poissons_ratio = 0.34 # (-)
cladding_density = 6551.0 # kg/m^3
# Rod geometry
a_lower = 0.00851 # m (Checked with Paraview)
a_upper = 0.22051 # m (Checked with Paraview)
fuel_inner_radius = 0.0009 # m (Checked with Paraview)
fuel_outer_radius = 0.00278 # m (Checked with Paraview)
fuel_volume_ratio = 1.0 # (-)
fuel_diameter = 0.00556 # m
diametral_gap = 5.0e-5 # m
rod_power_scale_factor = 0.212 # m (rod height)
# Temperature conditions
initial_temperature = 300 # K
stress_free_temperature = 300 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-100 0 199274402 199274403'
pressure_ramp_y = '0.0298 1 1 0.0298'
pressure_ramp_factor = 3.40e6 # (-) CHECK could not locate a number in hwr-671
# Plenum parameters
initial_plenum_pressure = 1.0e6 # Pa
startup_time = 0 # s
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-K
# Neutronics and power
energy_per_fission = 3.2e-11 # J/fission (200 MeV per fission)
fast_neutron_flux_factor = 1.6e12 # n/m2-s per W/m
# Contact
contact_penalty = 1e14 # (-)
roughness_primary = 2.8e-7 # (2.6e-7+3e-7)/2 = 2.8e-7
roughness_secondary = 1e-6
kennard_coefficient = 0.2173
# Relocation
relocation_activation1 = 5000 # W/m
burnup_relocation_stop = 0.02524 # FIMA
# Numerical options
damper_max_temperature_increment = 50.0 # K
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 199278002 # s (199275500+3600)
dtmax = 1e6 # s
dtmin = 1 # s
TimeStepper_dt = 10000 # s
TimeStepper_optimal_iterations = 1000
TimeStepper_growth_factor = 10
TimeStepper_linear_iteration_ratio = 100
# Postprocessor parameters
FCT_top_nodeid = 4066 # Global node ID 4067
FCT_mid_nodeid = 2073 # Global node ID 2074
FCT_bottom_nodeid = 125 # Global node ID 126
# Data file pathways
rod_mesh_file = 'ifa515_insulator.e'
power_profile_data_file = 'IFA515_power.csv'
clad_wall_temp_data_file = 'IFA515_clad_temp.csv'
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature} # set initial temperature to ambient
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[grain_radius]
block = 4
initial_condition = ${initial_grain_radius}
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = ${power_profile_data_file}
format = columns
[]
[axial_peaking_factors]
type = ParsedFunction # no axial power profile
expression = '1'
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = ${clad_wall_temp_data_file}
format = columns
[]
[axial_clad_peaking]
type = ParsedFunction # no axial clad temperature
expression = '1'
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = '4'
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[insulation]
block = '3 5'
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'insulator_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = 4 # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Burnup]
[burnup]
block = 4
rod_ave_lin_pow = power_profile # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 20
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.115 0.885 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 4
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel and insulators
formulation = kinematic
penalty = ${contact_penalty}
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact_clad]
# thermal conatact between the fuel outer radius and the clad inner wall
type = GasGapHeatTransfer
variable = temperature
primary = 5 # clad Zr barrier not modeled
secondary = 10 # fuel and insulators
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
kennard_coefficient = ${kennard_coefficient}
gap_conductance_model = TOPTAN
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = TOPTAN
meyer_hardness_model = MATPRO
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temperature
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
factor = ${pressure_ramp_factor}
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 4
burnup = burnup
temperature = temperature
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = '4'
temperature = temperature
thermal_conductivity_model = NFIR
burnup = burnup
initial_porosity = ${initial_fuel_porosity}
[]
[insulator_thermal]
type = UO2Thermal
block = '3 5'
temperature = temperature
thermal_conductivity_model = NFIR
burnup_function = ${insulator_burnup_function}
initial_porosity = ${initial_fuel_porosity}
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '4'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 4
temperature = temperature
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = 4
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 4
burnup = burnup
diameter = ${fuel_diameter}
diametral_gap =${diametral_gap}
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
burnup_relocation_stop = ${burnup_relocation_stop}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[insulator_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 5'
[]
[insulator_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 5'
temperature = temperature
[]
[insulator_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = '3 5'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${insulator_thermal_expansion_coeff}
eigenstrain_name = 'insulator_thermal_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 4
temperature = temperature
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius = grain_radius
gbs_model = true
burnup = burnup
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = ${cladding_youngs_modulus}
poissons_ratio = ${cladding_poissons_ratio}
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = '1'
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = '4 3 5'
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = ${damper_max_temperature_increment}
variable = temperature
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = ${l_max_its}
l_tol = ${l_tol}
# controls for nonlinear iterations
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# time control
start_time = ${start_time}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
# control for adaptive time steping
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
optimal_iterations = ${TimeStepper_optimal_iterations}
growth_factor = ${TimeStepper_growth_factor}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 4
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 4
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '4'
variable = grain_radius
[]
[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
fission_rate = fission_rate
block = 4
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = ${rod_power_scale_factor}
[]
[average_fission_rate]
type = ElementAverageValue
block = 4
variable = fission_rate
[]
[FCT_top]
type = NodalVariableValue
nodeid = ${FCT_top_nodeid}
variable = temperature
[]
[FCT_mid]
type = NodalVariableValue
nodeid = ${FCT_mid_nodeid}
variable = temperature
[]
[FCT_bottom]
type = NodalVariableValue
nodeid = ${FCT_bottom_nodeid}
variable = temperature
[]
[FCT_ave]
type = SideAverageValue
boundary = 13
variable = temperature
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 4
cladding_blocks = 1
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fission_gas_released FCT_top FCT_mid rod_total_power'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.0248576
pellet_height = 0.2606424
pellet_quantity = 1
clad_bot_gap_height = 0.0145
pellet_outer_radius = 3.92e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 295.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 86400 47386400 47472800 47559200 47645600 94945600 95032000'
y = '0.0065371 1 1 1 1 1 1 1 0.0065371'
scale_factor = 15.5e6
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = 'fission_gas_released he_prod'
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 95032000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = 'fission_gas_released he_prod'
output = plenum_pressure
refab_time = 95032000
refab_pressure = 8.2e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.00914 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = BoundingValueElementDamper
min_value = 290.0
max_value = 3000.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -10
n_startup_steps = 1
end_time = 95032000
dtmax = 1e6
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[he_prod]
type = IFBAHeProduction
b10_load = 9.27165354e-5
b10_enrich = 0.5
burnup = average_burnup
zrb2_thick = 10e-6
fuel_out_rad = 9.32e-3
ifba_len = 0.3
u235_enrich = 0.05
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[checkpoint]
type = Checkpoint
num_files = 2
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(assessment/LWR/validation/IFA_681/analysis/rod3/IFA_681_rod3.i)
# Halden test IFA-681, rod 3
initial_fuel_density = 10522
[GlobalParams]
density = ${initial_fuel_density}. # 96.0% 10960
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 'mesh_ifa681r3_093_quad4.e'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[Functions]
[average_lhr]
type = PiecewiseLinear
data_file = 'alhr_history_ifa681r3.csv'
scale_factor = 1.e+03
format = columns
[]
[axial_scaling_lhr]
type = PiecewiseBilinear
data_file = 'peakfact_lhr_ifa681r3.csv'
axis = 1
[]
[coolant_inlet_temp]
type = PiecewiseLinear
data_file = 'coolant_inlet_temp_ifa681r3.csv'
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = 'fast_nflux_ifa681r3.csv'
scale_factor = 1.e+17
format = columns
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200. 0.'
y = ' 0. 1.'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
initial_condition = 6.55e-06
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
initial_condition = 0.039
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 'clad'
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_3 pellet_type_4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel_pellets]
add_variables = false
block = 'pellet_type_3 pellet_type_4'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz'
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain fuel_thermal_eigenstrain fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = false
block = 'clad'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_xx creep_strain_zz'
eigenstrain_names = 'clad_irradiation_growth_eigenstrain clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[uo2nat]
add_variables = false
block = 'pellet_type_2 pellet_type_5'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'uo2nat_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[al2o3]
add_variables = false
block = 'pellet_type_1 pellet_type_6'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'al2o3_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_]
type = NeutronHeatSource
variable = temp
block = 'pellet_type_3 pellet_type_4'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_3 pellet_type_4'
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
num_radial = 40
bias = 0.95
num_axial = 20
a_lower = 120.3e-03
a_upper = 520.5e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.095e-03
fuel_volume_ratio = 1.
isotopes = 'Gd155 Gd157 U235 U238'
isotope_fractions = '0.04 0.04 0.028 0.892 '
N155 = N155
N157 = N157
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.0e+7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
kennard_coefficient = 0.2173
jump_distance_model = TOPTAN
roughness_primary = 1.0e-6
roughness_secondary = 2.0e-6
gap_conductance_model = TOPTAN
quadrature = true
normal_smoothing_distance = 0.1
[]
[pellet_to_pellet1]
type = GapHeatTransfer
variable = temp
primary = 21
secondary = 22
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet2]
type = GapHeatTransfer
variable = temp
primary = 23
secondary = 24
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet3]
type = GapHeatTransfer
variable = temp
primary = 25
secondary = 26
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet4]
type = GapHeatTransfer
variable = temp
primary = 27
secondary = 28
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet5]
type = GapHeatTransfer
variable = temp
primary = 29
secondary = 30
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[CoolantChannel]
# Halden HBWR under natural circulation (v=0.4m/s)
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_inlet_temp
inlet_pressure = 3.5e+06 # Pa
inlet_massflux = 360. # kg/m^2-s
flow_area = 0.000195
heated_diameter = 0.0261
heated_perimeter = 0.0298
hydraulic_diameter = 0.0261
htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
compute_enthalpy = true
linear_heat_rate = average_lhr
axial_power_profile = axial_scaling_lhr
oxide_thickness = oxide_thickness
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.5e+06
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
## fuel ##
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_3 pellet_type_4'
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_3 pellet_type_4'
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_3 pellet_type_4'
temperature = temp
thermal_expansion_coeff = 10.0e-06
stress_free_temperature = 295.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
burnup_function = burnup
temperature = temp
gas_swelling_model_type = SIFGRS
block = 'pellet_type_3 pellet_type_4'
initial_fuel_density = 10522. # 96.0% 10960
initial_porosity = 0.040
total_densification = 0.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_3 pellet_type_4'
burnup_function = burnup
diameter = 8.19e-03
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
diametral_gap = 170.e-06
burnup_relocation_stop = 1e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 'pellet_type_3 pellet_type_4'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.040
diff_coeff_option = TURNBULL_D1_D2
transient_option = NO_TRANSIENT
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_3 pellet_type_4'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = TOPTAN
Gd_content = 0.08
initial_porosity = 0.040
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_3 pellet_type_4'
strain_free_density = ${initial_fuel_density}
[]
## uo2nat ##
[uo2nat_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_2 pellet_type_5'
youngs_modulus = 2.0e+11
poissons_ratio = 0.345
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_2 pellet_type_5'
[]
[uo2nat_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_2 pellet_type_5'
temperature = temp
thermal_expansion_coeff = 10.e-06
stress_free_temperature = 295.0
eigenstrain_name = 'uo2nat_thermal_eigenstrain'
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_2 pellet_type_5'
thermal_conductivity = 3.
specific_heat = 300.
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_2 pellet_type_5'
strain_free_density = ${initial_fuel_density}
[]
## al2o3 ##
[al2o3_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1 pellet_type_6'
youngs_modulus = 3.0e+11
poissons_ratio = 0.21
[]
[al2o3_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_6'
[]
[al2o3_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_6'
temperature = temp
thermal_expansion_coeff = 8.1e-06
stress_free_temperature = 295.0
eigenstrain_name = 'al2o3_thermal_eigenstrain'
[]
[al2o3_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_6'
thermal_conductivity = 18.
specific_heat = 880.
[]
[al2o3_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_6'
strain_free_density = 3800.
[]
## clad ##
[clad_elasticity]
type = ComputeIsotropicElasticityTensor
block = 'clad'
youngs_modulus = 7.5e+10
poissons_ratio = 0.3
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temp
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
stress_free_temperature = 295
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_growth_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
use_coolant_channel = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
min_value = 295
max_value = 3000
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 100'
l_tol = 1.e-02 # <--- l_tol is ignored when EW is used.
line_search = 'none'
l_max_its = 200
nl_max_its = 30
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -200.
n_startup_steps = 1
end_time = 223062317.
#num_steps = 20000
dtmax = 5.e+05
dtmin = 1.
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.e+02
optimal_iterations = 25
iteration_window = 5
timestep_limiting_function = average_lhr
force_step_every_function_point = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = average_lhr
[]
[fuel_volume]
type = InternalVolume
boundary = 8
outputs = exodus
[]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
[]
[TC_temp]
type = NodalVariableValue
variable = temp
nodeid = 797 # !! Mesh dependent
[]
[TCHoleBot_temp]
type = NodalVariableValue
variable = temp
nodeid = 50
[]
[TC_temp_node1]
type = NodalVariableValue
variable = temp
nodeid = 666
[]
[TC_temp_node2]
type = NodalVariableValue
variable = temp
nodeid = 665
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_3 pellet_type_4'
value_type = max
variable = temp
[]
[midplane_hoop_strain_outer]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = strain_zz
[]
[midplane_hoop_stress_outer]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = stress_zz
[]
[midplane_contact_pressure]
type = ElementalVariableValue
elementid = 189 # !! Mesh dependent
variable = contact_pressure
[]
[midplane_oxide_thickness]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = oxide_thickness
[]
[midplane_clad_outer_temp]
type = NodalVariableValue
nodeid = 1086 # !! Mesh dependent
variable = temp
[]
[midplane_clad_inner_temp]
type = NodalVariableValue
nodeid = 1088 # !! Mesh dependent
variable = temp
[]
[max_clad_outer_temp]
type = NodalExtremeValue
boundary = '1 2 3'
value_type = max
variable = temp
[]
[max_fuel_outer_temp]
type = NodalExtremeValue
boundary = 10
value_type = max
variable = temp
[]
[midplane_coolant_htc]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = coolant_htc
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_3 pellet_type_4'
temperature = temp
[]
[VectorPostprocessors]
[Concentrations]
type = RadialProfileSampler
variable = 'disp_x'
sort_by = 'id'
burnup_function = burnup
quantity = 'N155 N157 N235 N236 N238 N239 N240 N241 N242 RPF fission_rate ntot_hm burnup'
height = 0.2
execute_on = timestep_end
outputs = 'Concentrations'
[]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 N155 N157'
height = 0.2
burnup_function = burnup
outputs = 'True'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 5
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage max_fuel_temp'
execute_on = 'FINAL'
[]
[Concentrations]
type = CSV
file_base = 'Concentrations/'
[]
[True]
type = CSV
file_base = 'True/'
[]
[]
(examples/2D-RZ_rodlet_10pellets/smeared_cracking/ADSmearedCracking.i)
# This model is a higher order, smeared 10 pellet fuel stack (pellet).
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 10
pellet_height = 0.01186
pellet_outer_radius = 4.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 2.6e-2
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[crack_x]
order = CONSTANT
family = MONOMIAL
[]
[crack_y]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e08'
y = '0 2.5e4 2.5e04'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
variable = disp_y
value = -9.81
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[crack_x]
type = ADMaterialRealVectorValueAux
variable = crack_x
property = crack_damage
component = 0
block = pellet
[]
[crack_y]
type = ADMaterialRealVectorValueAux
variable = crack_y
property = crack_damage
component = 1
block = pellet
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
use_automatic_differentiation = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = ADDirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
use_ad = true
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ADComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
[]
[exponential_softening]
type = ADExponentialSoftening
[]
[fuel_creep]
type = ADUO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = ADUO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = ADHeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = clad
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ADZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ADZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = ADStrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ADElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ADElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
[PerformanceMetricOutputs]
[]
(test/tests/uo2_thermal/Halden/negative_temperature_exception.i)
# This test ensures that the moose exception to cut the timestep when a
# negative temperature is detected in UO2Thermal is properly executed.
[Mesh]
[line]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 2'
y = '300 -100.0'
[]
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[AuxVariables]
[burnup]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[burnup]
type = ConstantAux
variable = burnup
value = 0
[]
[]
[BCs]
[fixed_temp]
type = FunctionDirichletBC
variable = temp
boundary = 'left right'
function = temperature_func
[]
[]
[Materials]
[thermal]
type = UO2Thermal
thermal_conductivity_model = HALDEN
temperature = temp
burnup = burnup
[]
[]
[Executioner]
type = Transient
num_steps = 2
dt = 2
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'dt = 1'
execute_on = timestep_end
[]
[]
[Outputs]
csv = true
[]
(examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
converge_on = 'disp_x disp_y disp_z temp'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = DiscreteThreePellets3D_90deg_HEX8.e
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
patch_update_strategy = iteration
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = mortar
model = coulomb
c_normal = 1e+18
c_tangential = 1e+18
friction_coefficient = 0.5
#normalize_c = true
#correct_edge_dropping = true
#normal_lm_scaling = 1.0e-5
#tangential_lm_scaling = 1.0e-5
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_wedge]
type = DirichletBC
variable = disp_x
boundary = 98
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
# thermal_expansion_coeff = 10.0e-6 (reference)
# We are artificially increasing the fuel expansion to simulate mechanical contact within reasonable 'example' time
thermal_expansion_coeff = 70.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
line_search = 'basic'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-6
nl_abs_tol = 1e-9
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 25200
# Use time below for realistic fuel thermal expansion
# end_time = 4.0e7
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'fission_gas_released plenum_pressure interior_temp gas_volume'
[]
[]
(test/tests/triso_failure/ad_triso_1d_weibull_probability.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
use_automatic_differentiation = true
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_source]
type = ADNeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = ADBurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
use_automatic_differentiation = true
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = ADDirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = ADPressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[flux]
type = ADFastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ADComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = ADPyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'buffer IPyC OPyC'
[]
[PyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = ADUO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = ADStrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = ADHeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = ADStrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = ADHeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = ADStrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = ADHeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = ADStrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength]
type = ADGenericConstantMaterial
prop_values = '1000 1000 1000'
prop_names = 'characteristic_strength_SiC characteristic_strength_IPyC characteristic_strength_OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-6
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[Weibull_failure_probability_OPyC]
type = ADWeibullFailureProbability
block = OPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_OPyC
[]
[Weibull_failure_probability_IPyC]
type = ADWeibullFailureProbability
block = IPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_IPyC
[]
[Weibull_failure_probability_SiC]
type = ADWeibullFailureProbability
block = SiC
weibull_modulus = 6
characteristic_strength = characteristic_strength_SiC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(assessment/LWR/validation/IFA_681/analysis/rod2/IFA_681_rod2.i)
# Halden test IFA-681, rod 2
initial_fuel_density = 10533
[GlobalParams]
density = ${initial_fuel_density}. # 96.1% 10960
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 'mesh_ifa681r2_093_quad4.e'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[Functions]
[average_lhr]
type = PiecewiseLinear
data_file = 'alhr_history_ifa681r2.csv'
scale_factor = 1.e+03
format = columns
[]
[axial_scaling_lhr]
type = PiecewiseBilinear
data_file = 'peakfact_lhr_ifa681r2.csv'
axis = 1
[]
[coolant_inlet_temp]
type = PiecewiseLinear
data_file = 'coolant_inlet_temp_ifa681r2.csv'
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = 'fast_nflux_ifa681r2.csv'
scale_factor = 1.e+17
format = columns
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200. 0.'
y = ' 0. 1.'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
initial_condition = 5.69e-06
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 'clad'
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_3 pellet_type_4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel_pellets]
add_variables = false
block = 'pellet_type_3 pellet_type_4'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz'
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain fuel_thermal_eigenstrain fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = false
block = 'clad'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_xx creep_strain_zz'
eigenstrain_names = 'clad_irradiation_growth_eigenstrain clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[uo2nat]
add_variables = false
block = 'pellet_type_2 pellet_type_5'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'uo2nat_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[al2o3]
add_variables = false
block = 'pellet_type_1 pellet_type_6'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'al2o3_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_]
type = NeutronHeatSource
variable = temp
block = 'pellet_type_3 pellet_type_4'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_3 pellet_type_4'
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
num_radial = 40
bias = 0.95
num_axial = 20
a_lower = 120.3e-03
a_upper = 520.5e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.095e-03
fuel_volume_ratio = 1.
isotopes = 'Gd155 Gd157 U235 U238'
isotope_fractions = '0.01 0.01 0.0313 0.94861'
N155 = N155
N157 = N157
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.0e+7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
kennard_coefficient = 0.2173
jump_distance_model = TOPTAN
roughness_primary = 1.0e-6
roughness_secondary = 2.0e-6
gap_conductance_model = TOPTAN
quadrature = true
normal_smoothing_distance = 0.1
[]
[pellet_to_pellet1]
type = GapHeatTransfer
variable = temp
primary = 21
secondary = 22
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet2]
type = GapHeatTransfer
variable = temp
primary = 23
secondary = 24
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet3]
type = GapHeatTransfer
variable = temp
primary = 25
secondary = 26
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet4]
type = GapHeatTransfer
variable = temp
primary = 27
secondary = 28
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet5]
type = GapHeatTransfer
variable = temp
primary = 29
secondary = 30
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[CoolantChannel]
# Halden HBWR under natural circulation (v=0.4m/s)
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_inlet_temp
inlet_pressure = 3.5e+06 # Pa
inlet_massflux = 360. # kg/m^2-s
flow_area = 0.000195
heated_diameter = 0.0261
heated_perimeter = 0.0298
hydraulic_diameter = 0.0261
htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
compute_enthalpy = true
linear_heat_rate = average_lhr
axial_power_profile = axial_scaling_lhr
oxide_thickness = oxide_thickness
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.5e+06
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
## fuel ##
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_3 pellet_type_4'
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_3 pellet_type_4'
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_3 pellet_type_4'
temperature = temp
thermal_expansion_coeff = 10.0e-06
stress_free_temperature = 295.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
burnup_function = burnup
temperature = temp
gas_swelling_model_type = SIFGRS
block = 'pellet_type_3 pellet_type_4'
initial_fuel_density = 10533. # 96.1% 10960
initial_porosity = 0.039
total_densification = 0.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_3 pellet_type_4'
burnup_function = burnup
diameter = 8.19e-03
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
diametral_gap =170.e-06
burnup_relocation_stop = 1e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 'pellet_type_3 pellet_type_4'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.039
diff_coeff_option = TURNBULL_D1_D2
transient_option = NO_TRANSIENT
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_3 pellet_type_4'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = TOPTAN
Gd_content = 0.02
initial_porosity = 0.039
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_3 pellet_type_4'
strain_free_density = ${initial_fuel_density}
[]
## uo2nat ##
[uo2nat_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_2 pellet_type_5'
youngs_modulus = 2.0e+11
poissons_ratio = 0.345
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_2 pellet_type_5'
[]
[uo2nat_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_2 pellet_type_5'
temperature = temp
thermal_expansion_coeff = 10.e-06
stress_free_temperature = 295.0
eigenstrain_name = 'uo2nat_thermal_eigenstrain'
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_2 pellet_type_5'
thermal_conductivity = 3.
specific_heat = 300.
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_2 pellet_type_5'
strain_free_density = ${initial_fuel_density}
[]
## al2o3 ##
[al2o3_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1 pellet_type_6'
youngs_modulus = 3.0e+11
poissons_ratio = 0.21
[]
[al2o3_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_6'
[]
[al2o3_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_6'
temperature = temp
thermal_expansion_coeff = 8.1e-06
stress_free_temperature = 295.0
eigenstrain_name = 'al2o3_thermal_eigenstrain'
[]
[al2o3_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_6'
thermal_conductivity = 18.
specific_heat = 880.
[]
[al2o3_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_6'
strain_free_density = 3800.
[]
## clad ##
[clad_elasticity]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temp
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
stress_free_temperature = 295
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_growth_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
use_coolant_channel = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
min_value = 295
max_value = 3000
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 100'
l_tol = 1.e-02 # <--- l_tol is ignored when EW is used.
line_search = 'none'
l_max_its = 200
nl_max_its = 30
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -100.0
n_startup_steps = 1
end_time = 223062317
dtmax = 1.0e+06
dtmin = 0.01
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e+02
optimal_iterations = 25
iteration_window = 5
timestep_limiting_function = average_lhr
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = average_lhr
[]
[gas_volume]
type = InternalVolume
boundary = 9
[]
[fuel_volume]
type = InternalVolume
boundary = 8
outputs = exodus
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_3 pellet_type_4'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_3 pellet_type_4'
[]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
[]
[TCHoleBot_temp]
type = NodalVariableValue
variable = temp
nodeid = 63 # !! Mesh dependent
[]
[TC_temp_node1]
type = NodalVariableValue
variable = temp
nodeid = 813
[]
[TC_temp_node2]
type = NodalVariableValue
variable = temp
nodeid = 805
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_3 pellet_type_4'
value_type = max
variable = temp
[]
[midplane_hoop_strain_outer]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = strain_zz
[]
[midplane_hoop_stress_outer]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = stress_zz
[]
[midplane_contact_pressure]
type = ElementalVariableValue
elementid = 189 # !! Mesh dependent
variable = contact_pressure
[]
[midplane_oxide_thickness]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = oxide_thickness
[]
[midplane_clad_outer_temp]
type = NodalVariableValue
nodeid = 1086 # !! Mesh dependent
variable = temp
[]
[midplane_clad_inner_temp]
type = NodalVariableValue
nodeid = 1088 # !! Mesh dependent
variable = temp
[]
[max_clad_outer_temp]
type = NodalExtremeValue
boundary = '1 2 3'
value_type = max
variable = temp
[]
[max_fuel_outer_temp]
type = NodalExtremeValue
boundary = 10
value_type = max
variable = temp
[]
[midplane_coolant_htc]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = coolant_htc
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_3 pellet_type_4'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage max_fuel_temp'
execute_on = 'FINAL'
[]
[]
(examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar_friction/2D_discrete_finiteStrain_mortar_friction.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
family = LAGRANGE
order = FIRST
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = ../fine10_rz.e
type = FileMeshGenerator
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
# Define auxilary variables
[pid]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+09
c_tangential = 1e+17
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[pidaux]
type = ProcessorIDAux
variable = pid
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
burnup_relocation_stop = 0.03
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-4 NONZERO 1e-12'
snesmf_reuse_base = false
line_search = 'basic'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-5
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[contact_evolution]
type = NodalVariableValue
variable = mechanical_normal_lm
nodeid = 4533
[]
[temp_evolution]
type = NodalVariableValue
variable = temperature
nodeid = 4533
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
#[centerline_temp]
# type = SideAverageValue
# boundary = 12
# variable = temp
# execute_on = linear
#[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[temperature_post]
type = NodalValueSampler
variable = temperature
boundary = '10'
sort_by = y
[]
[contact_post]
type = NodalValueSampler
variable = mechanical_normal_lm
boundary = '10'
sort_by = y
[]
[disp_x]
type = NodalValueSampler
variable = disp_x
boundary = '10'
sort_by = y
[]
[disp_y]
type = NodalValueSampler
variable = disp_y
boundary = '10'
sort_by = y
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/ThermalFuel_error_messages/no_burnup_error.i)
#Error testing when burnup is not defined.
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 0.001
ymax = 0.001
[]
[]
[Variables]
[temp]
initial_condition = 200
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[heat_source]
type = HeatSource
variable = temp
value = 1e10
[]
[]
[Materials]
[heat_conductor]
type = UO2Thermal
block = 0
thermal_conductivity_model = NFIR
temperature = temp
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left right'
value = 200
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = false
[]
(examples/temperature_tables/layered1D_cases/1pt5D.i)
#
# This calculation originates in CASL, where there was a need to compute a fuel
# temperature table to be used in another application.
#
# The set of calculations done here through the 'examples' file can be visually
# checked by running './create_temp_table.py files.txt' and examining the
# raw_data.png file. The temperatures in the plot increase with increasing
# linear heat rate. At 15 kW/ft, it appears that the high power and centerline
# temperature cause a small gap and a relatively low rod average fuel
# temperature. If the centerline temperature is plotted instead, the expected
# increase in temperature with increase in linear heat rate is clear.
#
initial_fuel_density = 10257.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temp
volumetric_locking_correction = false
slice_heights = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212 0.16152' #VERA_DEFINED <<VERA MODIFIED>>
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
partitioner = centroid
centroid_partitioner_direction = y
patch_update_strategy = auto
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.00057
slices_per_block = 49
uniform_slice_heights = false
pellet_outer_radius = 0.004096
clad_gap_width = 8.4e-05
nx_p = 6
nx_c = 3
elem_type = EDGE3
bx_p = 0.5
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[terminator1]
type = Terminator
expression = 'burnup_EAV >= 0.0632'
[]
[terminator2]
type = Terminator
expression = 'plenum_pressure >= 1.55e7'
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 2.50e-06
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0.000000 10800 97200 500000000.000000'
# y = '0.000000 0.000000 16404.200000 16404.200000' #LHR5
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800 97200 500000000.000000'
z = '1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000'
axis = 1
scale_factor = 1
[]
[bc_temperature]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800 97200 500000000.000000'
z = '300.000000 300.000000 585.000000 585.000000 585.000000 585.000000 585.000000 585.000000'
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
scale_factor = 1
x = '0 10800.0'
y = '0.00651 1.0'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.55132e+07
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = fuel
fission_rate = fission_rate
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuelthermal_strain fuel_swelling fuel_relocation'
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
group_scalar_vars_in_reference_residual = true
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
extra_vector_tags = 'ref'
mesh_generator = layered1D_mesh
group_scalar_vars_in_reference_residual = true
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 100
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238'
isotope_fractions = '0.001 0.999'
fuel_volume_ratio = 1.0
fuel_pin_geometry = pin_geometry
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 4.29768e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temp
execute_on = linear
[]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain
block = clad
execute_on = timestep_end
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[relocation_strain]
type = MaterialRealAux
variable = relocation
property = relocation_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 5e13
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_secondary = 1e-06
roughness_coef = 1.5
roughness_primary = 1e-06
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fis_gas_released
tangential_tolerance = 1.0e-4
# quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.55132e+07
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[clad_coolant_surface]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = bc_temperature
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.017
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation
fuel_pin_geometry = pin_geometry
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 293.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
total_densification = 0.005
initial_fuel_density = 10257.0
eigenstrain_name = fuel_swelling
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
matpro_poissons_ratio = false
matpro_youngs_modulus = false
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLimbackHoppeUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = zirlo
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6560.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-5
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 50
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 5e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1e9
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = 0.5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[Predictor]
type = SimplePredictor
scale = 1.0
skip_times_old = '0 10800 97200'
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[average_clad_temp]
type = ElementAverageValue
block = clad
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = ElementExtremeValue
value_type = MAX
block = clad
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = ElementExtremeValue
value_type = MIN
block = clad
variable = temp
execute_on = 'initial timestep_end'
[]
[average_grain_radius]
type = ElementAverageValue
variable = grain_radius
block = fuel
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[_dt]
type = TimestepSize
[]
[nonlinear_its]
type = NumNonlinearIterations
[]
[linear_its]
type = NumLinearIterations
[]
[rod_average_fuel_temp]
type = ElementAverageValue
block = fuel
variable = temp
execute_on = 'initial timestep_end'
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.6576
execute_on = 'initial timestep_end'
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_history
[]
[clad_hoop_stress_max]
type = ElementExtremeValue
value_type = MAX
variable = stress_zz
block = clad
execute_on = 'initial timestep_end'
[]
[clad_hoop_stress_min]
type = ElementExtremeValue
value_type = MIN
variable = stress_zz
block = clad
execute_on = 'initial timestep_end'
[]
[max_fuel_centerline_temp]
type = NodalExtremeValue
variable = temp
boundary = 12
execute_on = 'initial timestep_end'
[]
[max_fuel_surface_temp]
type = NodalExtremeValue
value_type = MAX
variable = temp
boundary = 10
execute_on = 'initial timestep_end'
[]
[max_gap_distance]
type = NodalExtremeValue
value_type = MAX
variable = penetration
boundary = 10
execute_on = 'initial timestep_end'
[]
[burnup_EAV]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
[Outputs]
perf_graph = true
exodus = false
color = false
[csv]
type = CSV
execute_on = 'initial timestep_end'
[]
[chkfile]
type = CSV
show = 'fission_gas_release plenum_pressure rod_average_fuel_temp max_fuel_centerline_temp burnup_EAV'
sync_only = true
sync_times = '0 10800 97200'
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2d/27_2d.i)
initial_fuel_density = 10485.9
[GlobalParams]
density = ${initial_fuel_density} #95.5% TD (TD = 10980)
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (200 MeV)
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 3.5
pellet_outer_radius = 0.00456
pellet_mesh_density = customize
ny_p = 318
nx_p = 11
clad_thickness = 7.3e-4
clad_gap_width = 8.5e-5
clad_bot_gap_height = 1e-3
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.315
clad_mesh_density = customize
ny_c = 324
nx_c = 4
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 10e-6 / 2 * 1.56 = 7.8e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseBilinear
data_file = 27_2d_power.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0.006537 1'
[]
[time_function]
type = PiecewiseLinear
data_file = 27_2d_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04 0.96 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = pin_geometry
[]
[]
[AuxKernels]
[GrainRadiusAux]
type = GrainRadiusAux
block = pellet
execute_on = linear
temperature = temp
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
block = clad
factor = 4.0e13 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.2e6 # FUMEXII_27(2d) => 22 bar (2.2 MPa) (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 563
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 9.12e-3
rod_pitch = 1.43e-2
linear_heat_rate = power_profile
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.006
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10485.9
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.045
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 100.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 146085120
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = time_function
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[int_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[int_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 3.5 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(test/tests/axial_relocation/ad_uo2_pulverization_phasefield.i)
# This file is to test the phase-field based pulverization criterion for UO2 fuel
# with evolve_bubble_pressure_hbs = false and using the 2D phase field criterion
# for pulverization.
# In the test 5 axial fuel slices are modeled without cladding with an outer fuel
# radius of 4.5 mm and slice height of 0.1 m. Ten radial finite elements are used.
# The burnup increases linearly from the fuel centerline to the fuel surface.
# Temperature is held at constant T = 673.15 K from t = 0 to t = 100, followed
# by a ramp in temperature from t = 100 to t = 110. Pulverization will occur
# during the ramp only, in the rim region where a significant amount of high burnup
# structure formation has begun. Local pulverization is tracked with the material
# property pulverized, which is 0 where pulverization has not occured and 1 where
# it has occurred. This material property is output to the exodus file for this test.
# At each time step, the porosity in the HBS region is calculated at each radial
# position using the correlation due to Kampf in the UO2Thermal material.
# The porosity, along with the hydrostatic stress, are used to calculate the
# critical pressure for grain boundary fracture using data from fits to phase-field
# fracture simulations. The current pressure of the most likely bubble
# size is compared to the critical pressure to determine whether pulverization has
# occurred at each quadrature point.
# Based upon the conditions and threshold given above at t = 110 s the outer three
# elements should be completely pulverized. The inner radius of the third element
# is at a radius of 3.150 mm. Therefore the layered averaged pulverized fuel volume
# (in each layer in this case) is analytically determined by:
#
# V_p = pi * L * (R_o^2 - R_p^2)
#
# where L is the slice height (0.1 m), R_o is the outer fuel radius, and R_p is the
# radius into the fuel at which pulverization ends. Therefore:
#
# V_p = pi * (0.1) * (4.5e-3^2 - 3.150e-3^2)
# V_p = 3.24448e-6 m^3 in each layer.
#
# The layered_pulverized_fuel_volume AuxVariable computed by BISON gives
# a layered volume of pulverized fuel as 3.24448e-6 m^3.
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
include_clad = false
fuel_height = 0.5
include_plenum = false
nx_p = 10
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 673.15, 673.15+(t-100)*15.5)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = ADMaterialRealAux
block = fuel
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = '10 12'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
hbs_model = true
hbs_material = hbs_formation
evolve_bubble_pressure_hbs = false
[]
[uo2pulverizationmesoscale]
type = ADUO2PulverizationMesoscale
block = fuel
temperature = temperature
output_properties = pulverized
pulverization_criterion_type = phase_field_2D
outputs = exodus
[]
[dummy_stress]
type = ADGenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-1e7 -1e7 -1e7 0 0 0'
[]
[fuel_thermal]
type = ADUO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = ADHighBurnupStructureFormation
block = fuel
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized_aux
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 110
dt = 1
[]
[Outputs]
exodus = true
[]
(test/tests/uo2_thermal/Toptan/test.i)
# This test case is prepared to test the thermal conductivity using the Toptan model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the Toptan thermal conductivity model.
# The BISON predictions (BISON_k for UO2, BISON_Gd_k for UO2 with a 2% gadolinia content)
# compared to the expected results (expected_k for UO2, expected_Gd_k for UO2 with a 2% gadolinia content)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error expected_Gd_k BISON_Gd_k percent_error_Gd
# 6.0175288 6.0175288 3.22E-13 5.259445073 5.259445073 2.22E-13
# 5.728201376 5.728201376 8.33E-13 5.037338715 5.037338715 -5.11E-13
# 5.47848776 5.47848776 6.00E-13 4.843460198 4.843460198 3.33E-14
# 5.250144347 5.250144347 6.66E-14 4.664370877 4.664370877 7.66E-13
# 5.040274961 5.040274961 9.21E-13 4.498230606 4.498230606 3.11E-13
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = BurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = TOPTAN
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/uo2_thermal/Halden/test.i)
# This test case is prepared to test the thermal conductivity using the Halden model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the Halden UO2 thermal conductivity model.
# The BISON predictions (BISON_k) compared to the expected results (expected_k)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error expected_Pu_k BISON_Pu_k percent_error_Pu
# 5.869784658 5.869784658 -7.55E-13 5.401819451 5.401819451 -1.55E-13
# 5.580850701 5.580850701 5.44E-13 5.136078051 5.136078051 -3.55E-13
# 5.320173923 5.320173923 -5.55E-13 4.896337002 4.896337002 6.55E-13
# 5.083833746 5.083833746 3.11E-13 4.678989552 4.678989552 2.11E-13
# 4.86860483 4.86860483 1.44E-13 4.481068576 4.481068576 -5.77E-13
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = BurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = HALDEN
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
patch_update_strategy = iteration
[mesh]
type = FileMeshGenerator
file = DiscreteThreePellets3D_90deg.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
penalty = 1e14
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_wedge]
type = DirichletBC
variable = disp_x
boundary = 98
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 3.0e7
automatic_scaling = true
compute_scaling_once = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'plenum_pressure interior_temp gas_volume'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part2.i)
initial_fuel_density = 10430.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_9_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.262416
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseBilinear
data_file = average_coolant_htc.csv
axis = 1
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 200412461 200413048'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain
fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hoop_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_zz creep_strain_zz hoop_stress'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[rel]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 2.73291E-06 # Addition of the volume to bring the starting total volume to 19cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
gap_thickness_threshold = 0.00039
axial_relocation_output_options = 'MASS_FRACTION'
mesh_generator = layered1D_mesh
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 199159200
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 199159200
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 1.9e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 200412431
end_time = 200413048
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10430.0
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
# axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-3
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
# end_time = 199159200 # End base irradiation
# end_time = 200412431 # Begin Blowdown
end_time = 200413048 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '199159200 200312431 200411431 200412431 200412461 200413048'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
execute_on = 'initial timestep_end'
perf_graph = true
[outfile_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/IFA_519/analysis/IFA_519_Base.i)
# This is a partial input file base with information/features common to the experiments within this assessment
# NOTE: This file will NOT run on its own, it requires a IFA_519_rod_XX.params file to run
# Fuel material properties
initial_fuel_density = 10400.0 # kg/m^3 (Table 1 HWR 668)
initial_fuel_porosity = 0.053 # (-)
fuel_thermal_expansion_coeff = 10e-6 # K^-1
# Cladding material properties
cladding_density = 6551.0 # kg/m^3
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
# Rod geometry
a_lower = 0.00324 # m
fuel_inner_radius = 0 # m
fuel_volume_ratio = 1.0 # (-)
# Neutronics and power
energy_per_fission = 3.2e-11 # J/fission
fast_neutron_flux_factor = 1.6e12 # n/m^2-s per W/m (taken from IFA-431)
# Temperature conditions
initial_temperature = 293 # K
stress_free_temperature = 293 # K
# Contact
contact_penalty = 1e14
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
roughness_coef = 3.2
# Relocation
burnup_relocation_stop = 0.031254 # FIMA
relocation_activation1 = 5000 # W/m
# Coolant pressure ramp paramters
pressure_ramp_factor = 3.447e6 # (-) taken from IFA-431
# Plenum parameters
initial_plenum_pressure = 2.59e6 # Pa
startup_time = 0 # s
refab_temperature = 293 # K
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-k
# Numerical options
damper_max_temperature_increment = 50.0 # K
l_max_its = 100
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100 # s
dtmax = 1e6 # s
dtmin = 1 # s
TimeStepper_dt = 1.0e2 # s
TimeStepper_optimal_iterations = 1000
TimeStepper_linear_iteration_ratio = 100
TimeStepper_growth_factor = 5
TimeStepper_max_function_change = 3e20
[GlobalParams]
density = ${initial_fuel_density}
temperature = temperature
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[grain_radius]
block = 3
initial_condition = ${initial_grain_radius}
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ${power_history_data_file}
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[clad_temperature_bc]
type = PiecewiseLinear
data_file = ${clad_temperature_bc_data_file}
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = '3'
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[]
# Define kernels for the various terms in the PDE system (in all cases here, the axisymmetric (RZ) version is specified)
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source_] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
block = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = ${a_upper}
a_lower = ${a_lower}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 .88 0 0 0 0'
RPF = RPF
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = ${contact_penalty}
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = ${refab_time}
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020 # 20
value = 0.0
[]
[temperature]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temperature_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = ${refab_time}
refab_pressure = ${refab_pressure}
refab_temperature = ${refab_temperature}
refab_volume = ${refab_volume}
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[density_clad]
type = StrainAdjustedDensity
block = '1'
strain_free_density = ${cladding_density}
[]
[density_fuel]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
temperature = temperature
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = ${initial_fuel_porosity}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = ${burnup_relocation_stop}
relocation_activation1 = ${relocation_activation1} # initial relocation activation power
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = '1'
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = ${damper_max_temperature_increment}
variable = temperature
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
verbose = true
# controls for linear iterations
l_max_its = ${l_max_its}
l_tol = ${l_tol}
# controls for nonlinear iterations
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# time control
start_time = ${start_time}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
optimal_iterations = ${TimeStepper_optimal_iterations}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
growth_factor = ${TimeStepper_growth_factor}
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = 3
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 3
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/solid_swelling_only_small_strain.i)
#
# Test of fission product swelling - solid only
#
# With a burnup of 0.01719, the volumetric strain should be 0.01.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = small
eigenstrain_names = 'swelling_strain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
density_name = 'reg_density'
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.01719'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[solid_swell]
type = ADMaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = ADRankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
eigenstrain_name = swelling_strain
initial_fuel_density = 10430.0
include_densification = false
include_gas_swelling = false
[]
[fuel_stress]
type = ADComputeLinearElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = ADStrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10430.0
[]
[converter]
type = MaterialADConverter
ad_props_in = 'density'
reg_props_out = 'reg_density'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
end_time = 1
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temp'
[]
(test/tests/ifba_he_production/doc/fill_gas_helium.i)
#
# 2-D RZ One Pellet Test - Using Helium as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of He fill gas.
#
# This model results in a lower limit for the interior_temp due to the type of
# fill gas used.
#
[GlobalParams]
density = 10431.0 #95% TD (TD = 10980)
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 4
nx_p = 6
nx_c = 3
ny_cu = 3
ny_c = 4
ny_cl = 3
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
displacements = 'disp_x disp_y'
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = '3'
initial_condition = 5e-6 # must be the same as the initial value in Sifgr
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = '3'
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# CoolantChannel requires this to have units while axial_peaking_factors must be normalized.
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[q] # this is for fuel_relocation
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[SolidMechanics]
[solid]
temperature = temp
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
#convert W/m from power profile to fission/m**3-s
#calculated as 1/(energy_per_fission*area)
#using energy_per_fission = 3.2e-11, consistent with 200 MeV/fission
value = 5.3548e+14
fission_rate_function = q
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
# If you divide flux/power, you get this constant factor
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = '3'
variable = gas_swell
property = deltav_v0_bd
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
# pin entire clad bottom in y
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in y
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
# pin fuel axis in x and z
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = fis_gas_released
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
extra_vector_tags = 'ref'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_swelling]
type = VSwellingUO2
block = '3'
temperature = temp
burnup = burnup
gas_swelling_type = sifgrs
[]
[fuel_solid_mechanics_elastic]
type = Elastic
block = '3'
temperature = temp
youngs_modulus = 2.e11
poissons_ratio = 0.345
thermal_expansion = 10.0e-6
dep_matl_props = deltav_v0_bd
[]
[fission_gas_release]
type = Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_solid_mechanics]
type = SolidModel
block = 1
temperature = temp
youngs_modulus = 7.5e10
poissons_ratio = 0.3
thermal_expansion = 5.0e-6
constitutive_model = clad_plasticity
[]
[clad_growth]
type = IrradiationGrowthZr4
block = 1
fast_neutron_fluence = fast_neutron_fluence
growth_direction = 1
[]
[clad_plasticity]
type = IsotropicPlasticity
block = 1
temperature = temp
yield_stress = 550e6
hardening_constant = 2.5e9
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 25.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x'
off_diag_column = 'disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(examples/restart/Quad8.i)
# This is a single pellet version of the BISON example problem.
# Use it to learn about the restart capability.
#
# Here's a step-by-step example of what you should do to use the restart capability:
#
# Run the simulation out to 40 time steps:
#
#
# Tweak inputQuad8.i as needed. For example, extend the end time, introduce a power blip at the end, or...?
# Then, run again using the --recover option and the recover directory that was created in the previous step
#
# ~/projects/trunk/BISON/BISON-opt -i inputQuad8.i --recover inputQuad8_out_cp/0040 (again, you can redirect or not here)
#
#
# Look at the exodus file in a post processing program (like Paraview) and see if it did what you intended.
#
# An example of why you might want to do this is if you have a simulaiton that runs fine out to 40 time steps, but gets into trouble afer that. You could run the simulation out to 40 time steps, then experiment with changes to the input file that may help the simulation converge. It would obviate the need to run the simulation throught the "easy" part over and over again, thus saving you time.
#
# Send questions to the BISON Users mailing list, or stephen.novascone@inl.gov
#
# As a supplement to this example, also included is a restart.sh script that Jason Hales wrote to test restart.
# The first thing the script does is to run the simulation as you would normally.
# It copies the output file to a 'gold' file.
# Then, it runs the simulation again, but it specifies the numer of checkpoint files and the number of steps (fewer number of steps than specified in the input file).
#
# Using information from this shortented run, the script kicks off another simulation using the --recover option, which
# uses the result at the end of the shortened run as a starting point.
# The script then compares the two exodus files. One from the original (non restarted 'gold' run) and the one from the restart.
#
# That script is included as an example and reference for commands to use when you're using restart.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = iteration
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = single_pellet.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_volume_ratio = 0.987775
RPF = RPF
fuel_pin_geometry = pin_geometry
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = clad
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep] # creep for zircaloy cladding
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-7
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
# Stress Measures
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
#Strain measures
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet_type_1
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet_type_1
[]
[PerformanceMetricOutputs]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = Exodus
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/gas_only2.i)
#
# Test of fission product swelling - gas only (900K)
#
# With a burnup of 0.00714, the volumetric strain should be 0.0001.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 900.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = swelling
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.00714'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[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
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 900.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 900.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
initial_fuel_density = 10430.0
include_gas_swelling = true
include_solid_swelling = false
include_densification = false
eigenstrain_name = swelling
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = InternalVolume
boundary = 15
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temp'
file_base = gas_only2_out
[]
(assessment/LWR/validation/IFA_677/analysis/IFA_677_Base.i)
# This is a partial input file that contains characteristics common to the entire assessment case
# NOTE: This file is not meant to be run on its own as it requires information contained in the .params files
# Fuel material properties
total_densification = 0.09e-2 # (-)
oxygen_to_metal_ratio = 2.002 # (-)
# Cladding material properties
cladding_density = 6550.0 # kg/m^3
# Cladding geometry
clad_inner_radius = 4.65e-3 # m
clad_outer_radius = 5.375e-3 # m
# Rod geometry
a_lower = 0.001025 # m
fuel_inner_radius = 0.0 # m
fuel_outer_radius = 0.4565e-02 # m
fuel_volume_ratio = 0.9940 # (-)
fuel_diameter = 9.13e-3 # m
diametral_gap = 170.e-6 # m
# Neutronics, power, and isotope fractions
energy_per_fission = 3.28451e-11 # J/fission
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Temperature conditions
initial_temperature = 293.0 # K
stress_free_temperature = 293.0 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-200 0'
pressure_ramp_y = '0.0298 1'
pressure_ramp_factor = 3.4e6 # (-)
# Coolant Channel parameters
inlet_pressure = 3.4e+06 # Pa
inlet_massflux = 450. # kg/m^2-s
rod_diameter = 10.75e-03 # m
rod_pitch = 46.e-03 # m
htc_correlation_type = 2
# Contact
contact_penalty = 1e14 # (-)
roughness_primary = 5.0e-6
roughness_secondary = 0.32e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1 # m
# Relocation
relocation_activation1 = 5000 # W/m
# Plenum parameters
initial_plenum_pressure = 1.35e6 # Pa
startup_time = 0 # s
# Physical constants
gravitational_acceleration_constant = -9.81 # m/s^2
ideal_gas_constant = 8.3143 # J/mol-K
# Numerical options
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
start_time = -200 # s
n_startup_steps = 1
dtmax = 5e5 # s
dtmin = 0.1 # s
TimeStepper_dt = 2e2 # s
TimeStepper_max_function_change = 1e20
# Postprocessor parameters
burnup_scaling_factor = 950.0 # (-)
time_days_scale_factor = 1.157407407e-5 # (-)
midplane_oxide_thickness_elementid = 629
outer_midplane_clad_temperature_nodeid = 763
fuel_central_temperature_nodeid = 337
clad_elongation_nodeid = 826
fuel_elongation_nodeid = 504
upper_TC_temperature_nodeid = 633
lower_TC_temperature_nodeid = 31
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temperature
order = FIRST
family = LAGRANGE
density = ${initial_fuel_density}
initial_porosity = ${initial_fuel_porosity}
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
initial_condition = ${initial_grain_radius}
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
scale_factor = 1e3
format = columns
[]
[corrected_power_history]
type = ParsedFunction
symbol_names = 'rod_average_burnup power_history'
symbol_values = 'burnup_MWdkgU power_history'
expression = 'if(rod_average_burnup < 14.5, power_history, 0.98 * power_history)'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = ${axial_peaking_data_file}
scale_factor = 1
axis = 1
[]
[power_correction]
type = PiecewiseBilinear
data_file = ${power_correction_data_file}
scale_factor = 1
axis = 1
[]
[corrected_axial_peaking_factors]
type = CompositeFunction
functions = 'axial_peaking_factors power_correction'
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[coolant_inlet_temperature]
type = PiecewiseLinear
data_file = ${coolant_inlet_temperature_data_file}
scale_factor = 1
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
scale_factor = 1e4
format = columns
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_eigenstrain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = ${gravitational_acceleration_constant}
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = 1
property = effective_creep_strain
variable = effective_creep_strain
execute_on = 'timestep_end'
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = ${contact_penalty}
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = contact_pressure
quadrature = true
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '20'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '9'
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = coolant_inlet_temperature
inlet_pressure = ${inlet_pressure}
inlet_massflux = ${inlet_massflux}
rod_diameter = ${rod_diameter}
rod_pitch = ${rod_pitch}
htc_correlation_type = ${htc_correlation_type}
compute_enthalpy = true
linear_heat_rate = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
thermal_conductivity_model = HALDEN #NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
total_densification = ${total_densification}
initial_fuel_density = ${initial_fuel_density}
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
relocation_model = ESCORE_modified
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = corrected_power_history
fragmentation_model = BARANI
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
tangent_operator = elastic
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_creep]
type = UO2CreepUpdate
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = ${initial_grain_radius}
oxygen_to_metal_ratio = ${oxygen_to_metal_ratio}
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_primary_creep = true
model_thermal_creep = true
model_irradiation_creep = true
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = ${clad_inner_radius}
clad_outer_radius = ${clad_outer_radius}
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
cr_doped_option = BEST_ESTIMATE_1773
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = MaxIncrement
max_increment = 20
variable = temperature
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = corrected_power_history
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = NodalExtremeValue
variable = temperature
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = 'initial timestep_end'
[]
[burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[burnup_MWdkgU]
type = ScalePostprocessor
value = burnup
scaling_factor = ${burnup_scaling_factor}
[]
[time_days]
type = FunctionValuePostprocessor
function = t
scale_factor = ${time_days_scale_factor}
[]
[temperature_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[oxide_thickness_midplane]
type = ElementalVariableValue
elementid = ${midplane_oxide_thickness_elementid}
variable = oxide_thickness
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[temperature_clad_outer_midplane]
type = NodalVariableValue
nodeid = ${outer_midplane_clad_temperature_nodeid}
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_central]
type = NodalVariableValue
variable = temperature
nodeid = ${fuel_central_temperature_nodeid}
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = '9'
execute_on = 'initial linear'
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[clad_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_elongation_nodeid}
[]
[fuel_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_elongation_nodeid}
[]
[upper_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${upper_TC_temperature_nodeid}
[]
[lower_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${lower_TC_temperature_nodeid}
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 15
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'lower_TC_temperature upper_TC_temperature fgr_percent plenum_pressure strain_clad_hoop_max'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(test/tests/triso_failure/ad_triso_1d_failure.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
use_automatic_differentiation = true
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_source]
type = ADNeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = ADBurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
use_automatic_differentiation = true
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = ADDirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = ADPressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[radial_stress]
type = ADRankTwoCylindricalComponent
rank_two_tensor = stress
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 0 1'
cylindrical_component = RadialStress
property_name = radial_stress
outputs = all
[]
[max_principal_stress]
type = ADRankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = ADFastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ADComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = ADPyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = ADUO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = ADStrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = ADHeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = ADStrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = ADHeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = ADStrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = ADHeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = ADStrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = ADGenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = ADGenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ADElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = ADWeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = ADWeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[failure_indicator_debonding]
type = ADTRISODebondingFailureIndicator
boundary = IPyC_outer_boundary
bond_strength = 1e5
stress_name = radial_stress
[]
[strength_OPyC]
type = ADWeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
SiC_failure_debonding = failure_indicator_debonding
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(assessment/LWR/validation/IFA_535/analysis/rod_811/IFA_535_rod_811.i)
# IFA 535.6 rod 811 (Table & Figure references are to IFA-535.pdf)
initial_fuel_density = 10398.06
[GlobalParams]
density = ${initial_fuel_density} #Table 1 (PDF page 14), 94.7% TD #Assuming a TD of 10980.
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 20 # 50
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ifa535_rod811.e
[]
[]
[UserObjects]
[fuelPinGeometry]
type = FuelPinGeometry
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 297.0
# If the initial diameter from the mesh
# is compared to the pre & post-ramp diameters, then they should probably
# be compared at the same cladding temperatures.
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1'
initial_condition = 9.36e-6 # 2D grain radius 6um #From rod 810
#2.75e-6 #Table 3.2, 5.5/2 microns (Assuming 3D grain size)
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = avgPower_IFA535rod811.csv
format = columns
#direction = left
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axialPowerPeakingFactor_IFA535rod811.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 226461642 226461742 226465242 226465342 236293846 236294746'
y = '1.4475e-2 1 1 1.4475e-2 1.4475e-2 1 1 1.4475e-2'
[]
[cladTemp]
type = PiecewiseLinear
data_file = avgCladTemp_IFA535rod811.csv
format = columns
#direction = left
scale_factor = 1
[]
[cladPeakingFactors]
type = PiecewiseBilinear
data_file = axialCladTempPeakingFactor_IFA535rod811.csv
scale_factor = 1
axis = 1
[]
[cT]
type = CompositeFunction
functions = 'cladTemp cladPeakingFactors'
[]
[fluxFactor]
type = PiecewiseLinear
data_file = flux_IFA535rod811.csv
format = columns
#direction = left
scale_factor = 1
[]
[fluxValue]
type = CompositeFunction
functions = 'fluxFactor power_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1' # fission rate applied to the fuel (block 2) only
#fission_rate = fission_rate # coupling to the fission_rate aux variable
burnup_function = burnup
#fuel_pin_geometry = fuelPinGeometry
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuelPinGeometry
#a_upper = 337.53e-3 #317.4e-3+20.13e-3 (a_lower+pellet_height),top of fuel stack
#a_lower = 20.13e-3 #From top_bot_clad_height #18.5e-3 #bottom of fuel stack, Figure 3.1
#fuel_inner_radius = 0
#fuel_outer_radius = 4.569e-3 #Table 3.2, from diameter
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0988 0.9012 0 0 0 0'
fuel_volume_ratio = 1.0
#fuel_volume_ratio = 0.9756625712887741 #(dimple fraction) from calculations in fuel_volume_ratio.ipynb
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
axial_power_profile = axial_peaking_factors
#rod_ave_lin_pow = power_profile
#factor = 3.71098e13 #from fluxCalc.xlsx #8.025e17 #Table 3.7, avg. of cycles 8-11, converted to n/(m^2-s)
function = fluxValue
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
# Define mechanical contact between the
# fuel (sideset=10) and the clad (sideset=5)
primary = 5
secondary = 10
#penalty = 1e7 #for kinematic (default method is kinematic)
formulation = penalty #penalty method - same as rod810
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
# Define thermal contact between the
# fuel (sideset=10) and the clad (sideset=5)
type = GasGapHeatTransfer
variable = temp
primary = 5 #'4 5 6' #5
secondary = 10 #8 #10
initial_moles = initial_moles # coupling to a postprocessor
# which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor
# which supplies the fission gas addition
roughness_secondary = 1e-6 #default
roughness_primary = 2e-6 #use 2e-6 instead of default
roughness_coef = 3.2 #use 3.2 unless know better
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 226461742
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
# pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
# pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
# pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7e6 #pp. 8 of "535.pdf"
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.1e6 #from pp.6 of "535.pdf" for IFA-409
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get
# inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get
# gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get
# fission gas added
output = plenum_pressure # coupling to post processor to
# output plenum/gap pressure
refab_time = 226461742 #226465242 #217722744
refab_pressure = .76e6 #3.2e6
refab_temperature = 298.15 #449.05
refab_volume = 9.6e-6
displacements = 'disp_x disp_y'
[]
[]
[claddingSurfTemp]
type = FunctionDirichletBC
function = cT
boundary = '1 2 3' #2 # cladding boundary
variable = temp
[]
[]
[Materials]
[density_clad]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6551.0 #Check this value; cladding is Zr-2
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet_type_1'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
# temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
initial_porosity = .053 #(1-density/theoreticalDensity)
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 297.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
fuel_pin_geometry = fuelPinGeometry
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.2 #0.02
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = 'clad'
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_creep'
block = 'clad'
[]
[clad_creep] # creep for zircaloy cladding
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 297.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10398.06
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1'
temperature = temp
#fission_rate = fission_rate # coupling to fission_rate aux variable
#initial_grain_radius = 9.36e-6 # 2D grain radius 6um #From rod 810
#2.75e-6 #Table 3.2, 5.5/2 microns (Assuming 3D grain size)
grain_radius = grain_radius
gbs_model = true
#burnup = burnup
burnup_function = burnup
#total_densification = 0.009 #Leave at default
initial_porosity = .053 #(1-density/theoreticalDensity)
transient_option = MICROCRACKING
#compute_swelling = true
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
# [limitDisp]
# type = MaxIncrement
# max_increment = 1e-5
# variable = disp_x
# []
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-3 #1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 236294746 #last time step from avgPower_IFA535rod811.csv
dtmax = 2e6 #1e6
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
force_step_every_function_point = true
timestep_limiting_function = power_profile
max_function_change = 3e20
optimal_iterations = 20 #15
iteration_window = 6
linear_iteration_ratio = 100
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
# volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temp]
# average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 'pellet_type_1'
[]
[input_rod_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[maxCenterlineTemp]
type = NodalExtremeValue
boundary = 12 # pellet_centerline
variable = temp
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
#checkpoint = true
#execute_on = 'nonlinear timestep_end'
csv = true
exodus = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/triso_failure/triso_1d_weibull_probability.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'buffer IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength]
type = GenericConstantMaterial
prop_values = '1000 1000 1000'
prop_names = 'characteristic_strength_SiC characteristic_strength_IPyC characteristic_strength_OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[Weibull_failure_probability_OPyC]
type = WeibullFailureProbability
block = OPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_OPyC
[]
[Weibull_failure_probability_IPyC]
type = WeibullFailureProbability
block = IPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_IPyC
[]
[Weibull_failure_probability_SiC]
type = WeibullFailureProbability
block = SiC
weibull_modulus = 6
characteristic_strength = characteristic_strength_SiC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM071/BFM071.i)
################################################################################
#
# Description: Calvert Cliffs BFM071
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM071_power.csv
# axial peaking factor file BFM071_axial_peaking.csv
# flux boundary condition file BFM071_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31727
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM071_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM071_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 178956096 178956456'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 178956096 178956456'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM071_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 178956456
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/solid_swelling_only.i)
#
# Test of fission product swelling - solid only
#
# With a burnup of 0.01719, the volumetric strain should be 0.01.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'swelling_strain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
density_name = 'reg_density'
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.01719'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[solid_swell]
type = ADMaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[total_strain_xx]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = total_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[total_strain_yy]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = total_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[total_strain_zz]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = total_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[volumetric_strain]
type = ADRankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 1000.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
eigenstrain_name = swelling_strain
initial_fuel_density = 10430.0
include_densification = false
include_gas_swelling = false
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = ADStrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10430.0
[]
[converter]
type = MaterialADConverter
ad_props_in = 'density'
reg_props_out = 'reg_density'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
end_time = 1.0
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
[]
[total_strain_xx]
type = ElementAverageValue
variable = total_strain_xx
[]
[total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
[]
[total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
file_base = solid_only_out
[]
(examples/accident_tolerant_fuel/uo2_fecral/uo2_fecral.i)
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
displacements = 'disp_x disp_y'
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = uo2_fecral_smeared.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[mass_gain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e4 1e8'
y = '0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '6.537e-3 1 1'
scale_factor = 15.5e6
[]
[mass_flux_func]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '3800. 3800. 3800.'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[]
[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_type_1
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_strain_hoop]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
scalar_type = HoopStress
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
block = clad
[]
[oxide]
type = MaterialRealAux
variable = oxide_thickness
property = scale_thickness
boundary = 2
[]
[mass_gain]
type = MaterialRealAux
variable = mass_gain
property = oxide_mass_gain
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
normal_smoothing_distance = 0.1
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = mass_flux_func # kg/m^2-sec
rod_diameter = 9.5e-3 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet_type_1
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
burnup_function = burnup
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = FeCrAlThermal
material = C35M
block = clad
temperature = temp
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = FeCrAlElasticityTensor
temperature = temp
fecral_material_type = C35M
block = clad
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_creep clad_plasticity'
block = clad
[]
[clad_creep]
type = FeCrAlCreepUpdate
block = clad
temperature = temp
fecral_material_type = C35M
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = FeCrAlThermalExpansionEigenstrain
block = clad
temperature = temp
fecral_material_type = C35M
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = FeCrAlVolumetricSwellingEigenstrain
block = clad
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_volumetric_strain
[]
[clad_plasticity]
type = FeCrAlPlasticityUpdate
block = clad
hardening_constant = 2.5e9
temperature = temp
yield_stress = 500.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7250.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[failure_criterion]
type = FeCrAlCladdingFailure
boundary = '2 5'
hoop_stress = hoop_stress
failure_criterion = UTS
temperature = temp
[]
[oxidation]
type = FeCrAlOxidation
reactor_type = PWR
boundary = 2
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200.0
min_value = 293.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1e8
dtmax = 1e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 5e5
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2.0
timestep_limiting_postprocessor = material_timestep
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
[]
[average_burnup]
type = ElementAverageValue
block = pellet_type_1
variable = burnup
[]
[oxide_thickness]
type = ElementExtremeValue
block = clad
variable = oxide_thickness
[]
[mass_gain]
type = ElementExtremeValue
block = clad
variable = mass_gain
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
csv = true
print_linear_residuals = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
(examples/Burnup_profile_displaced_mesh/RadialProfileSampler.i)
initial_fuel_density = 10233
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh.e
[]
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 5064768'
y = '0.007382 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
add_variables = true
block = pellet_type_1
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
num_radial = 80
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.88e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 1.7e-4 #diameteral gap
relocation_activation1 = 5000 # intial relocation activation power set to 5kW/m
burnup_relocation_stop = .04
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = 'TURNBULL_D1_D2'
transient_option = 'MICROCRACKING'
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0
dtmax = 1e6
dtmin = 100
end_time = 5064768
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[]
[VectorPostprocessors]
[Concentrations_on_displaced_mesh]
type = RadialProfileSampler
variable = 'disp_x'
sort_by = 'id'
burnup_function = burnup
quantity = 'N235 N236 N238 N239 N240 N241 N242 ntot_hm'
height = 0.46324
execute_on = timestep_end
outputs = 'ConcentrationsDisplaced'
[]
[Concentrations_on_undisplaced_mesh]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242'
height = 0.46324
burnup_function = burnup
outputs = 'ConcentrationsUnDisplaced'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
csv = true
exodus = false
color = false
[ConcentrationsDisplaced]
type = CSV
file_base = ConcentrationsDisplaced/'
[]
[ConcentrationsUnDisplaced]
type = CSV
file_base = 'ConcentrationsUnDisplaced/'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
# This file was created using BIF with the following inputs:
# FK03/FK03.var - md5sum: 63fb064f9380e246b80d3fb7762c0b71
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
block = '1 3'
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
initial_moles = initial_moles
gas_released = fission_gas_released
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
block = '1 3'
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 550000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part3_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part2_gas_communication_checkpoint2_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
# initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
#axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
#hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'gap_layer_pressure_max < 101325.01'
execute_on = 'TIMESTEP_END'
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
equilibrium_pressure = 7.5e5
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dt = .1
end_time = 172489651 # End
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_3'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_3'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
[exodus3]
type = Exodus
file_base = IFA_650_4_gas_part3_out
execute_on = 'initial timestep_end'
[]
[checkpoint3]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_3]
type = CSV
#execute_on = 'FINAL'
#create_final_symlink = true
file_base = 'clad3/new'
[]
[outfile_temp_3]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_3]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(examples/TRISO/accident_simulation/triso2D_accident_ad.i)
# This example is 2D-RZ analysis of a TRISO fuel particle. Fully coupled
# heat transfer and solid mechanics, plus diffusion of the fission product
# species cesium (Cs) are simulated. The mesh includes contact surfaces
# between the buffer and IPyC layers to facilitate a gap opening between
# these layers. These surfaces are initially in mechanical contact but
# are assumed to have no strength in tension. A coarse mesh is used to
# provide a short run time.
# The calculation simulates fuel-life in three steps. The first step is an
# irradiation period, where constant power and a fixed particle surface
# temperature (1500 K) are assumed over a lifetime of 76 Ms (2.4 yrs).
# For the second step, fuel removal and storage are simulated by setting
# the reactor power and Cs source terms to zero, reducing the particle
# surface temperature to ambient (300 K), and then holding it
# for 100 days. A third and final step simulates accident
# behavior by increasing the particle surface temperature from ambient
# to 2073 K over 2 hrs, and then holding it at this elevated temperature
# for an additional 200 hrs. At the particle outer boundary, the Cs
# concentration is held at zero and the pressure at ambient during the
# entire simulation. The particle is assumed to be stress-free at an
# initial temperature of 1500 K.
#
# Details about this simulation are given in Section 4 of the following
# article: J. D. Hales, R. L. Williamson, S. R. Novascone, D. M. Perez,
# B. W. Spencer and G. Pastore, "Multidimensional multiphysics simulation
# of TRISO particle fuel", Journal of Nuclear Materials, Vol. 443, p. 531,
# 2013.
# This is a version using a thermomechanical mortar approach. It uses
# Automatic Differentiation classes and models gap mass transfer using
# flux preserving and sorption mortar constraints. Sorption constants are
# given in Table 1 of the following article: A. Londono-Hurtado, I.
# Szlufarska, R. Bratton and D. Morgan, "A review of fission product
# sorption in carbon structures", Journal of Nuclear Materials, Vol. 426,
# p. 254, 2012.
initial_fuel_density = 11000.0
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
flux_conversion_factor = 0.85
use_automatic_differentiation = true
[]
[Mesh]
coord_type = RZ
[file]
type = FileMeshGenerator
file = triso2Dmed.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp conc'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 1500.0
[]
[conc]
initial_condition = 0.0
[]
[conc_lm]
block = pellet_clad_mechanical_secondary_subdomain
[]
[conc_dx_lm]
block = pellet_clad_mechanical_secondary_subdomain
[]
[conc_dy_lm]
block = pellet_clad_mechanical_secondary_subdomain
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fluence]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[creep_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[integral_flux_error]
type = ParsedFunction
symbol_names = 'buffer_integral_flux IPyC_integral_flux'
symbol_values = 'buffer_integral_flux IPyC_integral_flux'
expression = 'IPyC_integral_flux + buffer_integral_flux'
[]
[partial_pressure_error]
type = ParsedFunction
symbol_names = 'buffer_partial_pressure IPyC_partial_pressure'
symbol_values = 'buffer_partial_pressure IPyC_partial_pressure'
expression = 'IPyC_partial_pressure - buffer_partial_pressure'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress'
strain = FINITE
incremental = true
add_variables = false
[default]
block = 'fuel buffer IPyC OPyC'
eigenstrain_names = 'thermal_strain swelling_strain'
extra_vector_tags = 'ref'
[]
[SiC]
block = 'SiC'
eigenstrain_names = 'thermal_strain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = ADTimeDerivative
variable = conc
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[mass]
type = ADArrheniusDiffusion
variable = conc
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[mass_source]
type = ADBodyForce
variable = conc
function = power_history
value = 1.22e-5 # units of moles/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
block = 'fuel buffer IPyC SiC OPyC'
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = fuel
fission_rate_function = power_history
value = 3.89e19
execute_on = timestep_begin
[]
[fluence]
type = ADMaterialRealAux
property = fast_neutron_fluence
variable = fluence
[]
[burnup]
type = ADBurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
execute_on = timestep_begin
density = ${initial_fuel_density}
[]
[creep_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_xx
index_i = 0
index_j = 0
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_yy
index_i = 1
index_j = 1
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_zz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_zz
index_i = 2
index_j = 2
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[]
[ThermalContactMortar]
[thermal]
secondary_variable = temp
primary_boundary = 15
secondary_boundary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
gap_geometry_type = CYLINDER
min_gap = 1e-7
max_gap = 50e-6
roughness_coef = 0.0
correct_edge_dropping = true
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
model = frictionless
formulation = mortar
c_normal = 1.0e8
correct_edge_dropping = true
[]
[]
[Constraints]
[cesium_gap_value]
type = MassSorptionConstraint
variable = conc_lm
primary_variable = conc
primary_boundary = 15
primary_subdomain = pellet_clad_mechanical_primary_subdomain
secondary_variable = conc
secondary_boundary = 17
secondary_subdomain = pellet_clad_mechanical_secondary_subdomain
partial_pressure_name = partial_pressure
epsilon = 1e-4
correct_edge_dropping = true
[]
[cesium_gap_flux_x]
type = MassFluxConstraint
variable = conc_dx_lm
primary_variable = conc
diffusivity_primary = arrhenius_diffusion_coef
primary_boundary = 15
primary_subdomain = pellet_clad_mechanical_primary_subdomain
secondary_variable = conc
diffusivity_secondary = arrhenius_diffusion_coef
secondary_boundary = 17
secondary_subdomain = pellet_clad_mechanical_secondary_subdomain
component = 0
epsilon = 1e-5
correct_edge_dropping = true
[]
[cesium_gap_flux_y]
type = MassFluxConstraint
variable = conc_dy_lm
primary_variable = conc
diffusivity_primary = arrhenius_diffusion_coef
primary_boundary = 15
primary_subdomain = pellet_clad_mechanical_primary_subdomain
secondary_variable = conc
diffusivity_secondary = arrhenius_diffusion_coef
secondary_boundary = 17
secondary_subdomain = pellet_clad_mechanical_secondary_subdomain
component = 1
epsilon = 1e-5
correct_edge_dropping = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
extra_vector_tags = 'ref'
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = yzero
value = 0.0
extra_vector_tags = 'ref'
[]
# fix temperature on free surface
[freesurf_temp]
type = ADFunctionDirichletBC
variable = temp
boundary = exterior
function = temp_bc
extra_vector_tags = 'ref'
[]
# fix concentration on free surface
[freesurf_conc]
type = ADDirichletBC
variable = conc
boundary = exterior
value = 0.0
extra_vector_tags = 'ref'
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 0
startup_time = 1.0e4
R = 8.3145
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = ADFastNeutronFlux
calculate_fluence = true
factor = 5e17
[]
[fission_gas_release] # Sifgrs fission gas release mode
type = ADUO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[fuel_thermal]
type = ADUO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temp
burnup = burnup
eigenstrain_name = 'swelling_strain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = 'fuel'
[]
[fuel_elasticity]
type = ADComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = .345
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_den]
type = ADStrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density} # kg/m^3
[]
[fuel_conc]
type = ADArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = 'swelling_strain'
[]
[buffer_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[buffer_elasticity]
type = ADComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e10
poissons_ratio = .23
[]
[buffer_stress]
type = ADPyCCreep
block = buffer
temperature = temp
[]
[buffer_temp]
type = ADHeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = ADStrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_conc]
type = ADArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_partial_pressure]
type = ADSorptionPartialPressure
A = 19.33
B = -47290
D = 1.518
E = 4338
d1 = 3.397
d2 = 6.15e-4
unit_scale = 1e3 # convert from mol to mmol
density = 1000 # convert from mmol/m^3 to mmol/kg, using constant for compatibility with default AD derivative container size
concentration = conc
temperature = temp
block = buffer
outputs = 'all'
output_properties = partial_pressure
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[IPyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[IPyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[IPyC_elasticity]
type = ADComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[IPyC_disp]
type = ADPyCCreep
block = 'IPyC OPyC'
temperature = temp
[]
[IPyC_temp]
type = ADHeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = ADStrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1900.0
[]
[IPyC_conc]
type = ADArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8
q1 = 222.0e+3
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[IPyC_partial_pressure]
type = ADSorptionPartialPressure
A = 19.33
B = -47290
D = 1.518
E = 4338
d1 = 3.397
d2 = 6.15e-4
unit_scale = 1e3 # convert from mol to mmol
density = 1900 # convert from mmol/m^3 to mmol/kg, using constant for compatibility with default AD derivative container size
concentration = conc
temperature = temp
block = IPyC
outputs = 'all'
output_properties = partial_pressure
[]
[SiC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_elasticity]
type = ADComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = .13
[]
[SiC_creep]
type = ADMonolithicSiCCreepUpdate
block = SiC
temperature = temp
k_function = k_function
[]
[SiC_stress]
type = ADComputeMultipleInelasticStress
block = SiC
inelastic_models = 'SiC_creep'
[]
[SiC_temp]
type = ADHeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = ADStrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_conc]
type = ADArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[OPyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[OPyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[OPyC_elasticity]
type = ADComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[OPyC_conc]
type = ADArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-14'
snesmf_reuse_base = false
line_search = 'none'
nl_rel_tol = 5e-4
nl_abs_tol = 1e-10
nl_max_its = 20
l_max_its = 8
start_time = 0.0
end_time = 85.3682e6
dt = 100
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
growth_factor = 1.5
linear_iteration_ratio = 100
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
[]
[Predictor]
type = SimplePredictor
scale = 0.5
skip_times_old = '0 76e6 76.001e6 84.641e6 84.6482e6'
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
sync_times = '100 6308007 75696087'
sync_only = true
[]
[]
[Postprocessors]
[Cs_release]
type = ADSideDiffusiveFluxIntegral
variable = conc
diffusivity = arrhenius_diffusion_coef
boundary = exterior
execute_on = timestep_end
[]
[dt]
type = TimestepSize
execute_on = timestep_end
[]
[fis_gas_produced] # fission gas produced (moles)
type = ADElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ADElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
# ro = 3.125e-4
# ri = 2.125e-4
# vb = 4/3*pi*(ro^3-ri^3) = 8.76e-11
# buffer density = 1000
# PyC density = 1900
# fill ratio = 10/19
# vb*10/19 = 4.6e-11
# Must remove 4.6e-11 m^3 from the volume
addition = -4.6e-11
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[buffer_integral_flux]
type = ADSideDiffusiveFluxIntegral
variable = conc
boundary = 17
diffusivity = arrhenius_diffusion_coef
[]
[IPyC_integral_flux]
type = ADSideDiffusiveFluxIntegral
variable = conc
boundary = 15
diffusivity = arrhenius_diffusion_coef
[]
[buffer_partial_pressure]
type = ADSideAverageMaterialProperty
property = partial_pressure
boundary = 17
[]
[IPyC_partial_pressure]
type = ADSideAverageMaterialProperty
property = partial_pressure
boundary = 15
[]
[integral_flux_error]
type = FunctionValuePostprocessor
function = integral_flux_error
[]
[partial_pressure_error]
type = FunctionValuePostprocessor
function = partial_pressure_error
[]
[integral_Cs_release]
type = TimeIntegratedPostprocessor
value = Cs_release
[]
[Cs_production]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.22e-5 # units of moles/m**3-s
[]
[time_integral_Cs_production]
type = TimeIntegratedPostprocessor
value = Cs_production
[]
[volumeFuel_initial]
type = InternalVolume
boundary = fuel
execute_on = initial
[]
[integral_Cs_production]
type = ParsedPostprocessor
pp_names = 'time_integral_Cs_production volumeFuel_initial'
expression = 'time_integral_Cs_production * volumeFuel_initial'
[]
[Cs_release_fraction]
type = ParsedPostprocessor
pp_names = 'integral_Cs_release integral_Cs_production'
expression = 'integral_Cs_release / integral_Cs_production'
[]
[]
[VectorPostprocessors]
[temperaturevpp]
type = SideValueSampler
boundary = 11
variable = temp
sort_by = x
outputs = 'csv'
use_displaced_mesh = true
[]
[]
(assessment/LWR/benchmark/AREVA_idealized_case/analysis/AREVA_idealized_case.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = AREVA_idealized_case_mesh_coarse.e
[]
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 7.8e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[average_fast_flux]
type = PiecewiseLinear
data_file = average_fast_flux.csv
scale_factor = 1
format = columns
[]
[axial_fast_flux_peaking_factors]
type = PiecewiseBilinear
data_file = axial_fast_flux_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[fast_flux]
type = CompositeFunction
functions = 'average_fast_flux axial_fast_flux_peaking_factors'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0.0065371 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 3.65324
a_lower = 0.00324
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0040425
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '.045 .955 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = fast_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.6e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 555
inlet_pressure = 15.5e6
inlet_massflux = 3700
rod_diameter = 9.5e-3
rod_pitch = 1.43e-2 # ASSUMED: NOT SPECIFIED
linear_heat_rate = power_profile
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.008085
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =8.25e-5
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius # coupled grain radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 100.0
[]
[limitx]
type = MaxIncrement
variable = disp_x
max_increment = 1e-5
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 185056065
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 20
linear_iteration_ratio = 100
timestep_limiting_function = power_profile
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
outputs = exodus
[]
[int_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[int_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = '3'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_total_power'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/uo2_thermal/NFIR/test.i)
# This test case is prepared to test the thermal conductivity using the NFIR model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the NFIR thermal conductivity model.
# The BISON predictions (BISON_k for UO2, BISON_Gd_k for UO2 with a 2% gadolinia content)
# compared to the expected results (expected_k for UO2, expected_Gd_k for UO2 with a 2% gadolinia content)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error expected_Gd_k BISON_Gd_k percent_error_Gd
# 6.571905059 6.571905059 -6.88E-13 6.349827064 6.349827064 2.11E-13
# 6.136847044 6.136847044 -1.11E-13 5.948406017 5.948406017 6.88E-13
# 5.759309817 5.759309817 -6.00E-13 5.598024778 5.598024778 6.22E-13
# 5.428675322 5.428675322 2.44E-13 5.289609198 5.289609198 9.55E-13
# 5.136793791 5.136793791 8.10E-13 5.016121873 5.016121873 -7.33E-13
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = BurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = NFIR
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
#
# 2-D RZ One Pellet Test - IFBA using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas. In addition, an IFBA layer is added which will
# generate He gas to be added to the plenum. The postprocessor interior_temp
# should be the same as the pure Xe test case initially and as the He gas is
# added to the plenum from the IFBA, the interior_temp value should approach
# the He fill gas test case (both in the doc subdirectory).
#
# This model demonstrates that the gas conductance for the plenum is being
# updated for the He gas generated by the IFBA layer.
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = fuel_thermal_strain
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = clad_thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = clad_thermal_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[he_prod]
type = IFBAHeProduction
zrb2_load = 1.181e-4
ifba_len = 1.0e-2
b10_enrich = 0.50
zrb2_rel_dens = 0.7
model = burnup
u235_enrich = 0.045
burnup = average_burnup
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
file_base = fill_gas_xenon_w_ifba_check
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(examples/2D-RZ_rodlet_10pellets/quad8/Quad8.i)
# This model is a higher order, discrete 10 pellet fuel stack (pellet_type_1).
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ../quad8Medium10_rz.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 293.0 # set initial temp to fill gas temperature, usually 20C
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor] # isotropic elasticity tensor for UO2
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress] # elastic stress for UO2 (used instead of creep)
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion] # thermal expansion strain for UO2
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0 #Changed to match the value used in Zry
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
diameter = 0.0082
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = clad
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep] # creep for zircaloy cladding
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
# outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
# outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
# Stress Measures
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
#Strain measures
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet_type_1
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
# Contact variables
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 2887 # mesh dependent, at (0.0041, 0.0558887), near bottom of pellet 5
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 2887 # mesh dependent, at (0.0041, 0.0558887), near bottom of pellet 5
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/TRISO/validation/AGR-2/AGR-2_UO2.i)
# Definition of the mass source due to impurities in the OPyC layer.
#value = impurities * vol_kernel / vol_opyc
#value = 1.59e-6 * 4.07e-11 / 9.16e-11 # for UCO => 7.06e-7
#value = 1.57e-6 * 6.85e-11 / 1.18e-10 # for UO2 => 9.11e-7
mass_source_property_OPyC = 9.11e-7 # UO2
initial_fuel_density = 10858
initial_buffer_density = 990
initial_ipyc_density = 1900
initial_sic_density = 3200.0
initial_opyc_density = 1884
[GlobalParams]
initial_enrichment = 0.09600 # [wt-]
[]
[Mesh]
[gen]
kernel_radius = 253.85e-6
buffer_thickness = 97.7e-6
IPyC_thickness = 41.9e-6
SiC_thickness = 37.5e-6
OPyC_thickness = 45.6e-6
[]
[]
[Materials]
[burnup]
initial_density = ${initial_fuel_density}
C_U = 0
O_U = 2
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
burnup = burnup
[]
[fuel_density]
expression = ${initial_fuel_density}
[]
### Buffer Properties
[buffer_thermal]
initial_density = ${initial_buffer_density}
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
# This file was created using BIF with the following inputs:
# FK01.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.04298
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = 1
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE019/UFE019.i)
################################################################################
#
# Description: Calvert Cliffs UFE019
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file UFE019_power.csv
# axial peaking factor file UFE019_axial_peaking.csv
# flux boundary condition file UFE019_fast_flux.csv
#
################################################################################
initial_fuel_density = 10396.59
[GlobalParams]
density = ${initial_fuel_density} #94.75 %TD Assume TD = 10972.65 kg/m3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.29773
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
block = '1 3'
[]
[disp_y]
block = '1 3'
[]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
block = '1 3'
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = UFE019_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = UFE019_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 140582036 140582396'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 140582036 140582396'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = UFE019_fast_flux.csv
format = columns
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0398 .9602 0 0 0 0'
RPF = RPF
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = 5
secondary_boundary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
contact_pressure = mechanical_normal_lm
layer_thickness = layer_thickness_action
thermal_lm_scaling = 1.0e-2
correct_edge_dropping = true
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+14
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -pc_factor_shift_type -pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu superlu_dist NONZERO 1e-15 1e-5'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 140582396
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM070/BFM070.i)
################################################################################
#
# Description: Calvert Cliffs BFM070
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM070_power.csv
# axial peaking factor file BFM070_axial_peaking.csv
# flux boundary condition file BFM070_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.32168
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM070_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM070_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179225682 179226042'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179225682 179226042'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM070_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179226042
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_3/case_3_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
use_displaced_mesh = false
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.5e-4 2.5e-4 3.5e-4 3.9e-4 4.25e-4'
mesh_density = '1 0 1 128 128'
block_names = 'fuel buffer IPyC SiC'
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1273.0
[]
[]
[AuxVariables]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yz]
order = CONSTANT
family = MONOMIAL
[]
[stress_xz]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
initial_condition = 0.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = small
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[]
[stress_yz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yz
index_i = 1
index_j = 2
execute_on = timestep_end
[]
[stress_xz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xz
index_i = 0
index_j = 2
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = hydrostatic
execute_on = timestep_end
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1273.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[interior_pressure_x]
type = Pressure
variable = disp_x
boundary = IPyC_inner_boundary
factor = 25e6
[]
[]
[Materials]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer IPyC SiC'
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 1
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10800.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 1
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 950 #kg/m^3
block = buffer
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IPyC_temp]
type = HeatConductionMaterial
block = IPyC
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[IPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0 # kg/m^3
block = IPyC
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 1.0
dt = 1.0
[]
[Postprocessors]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[max_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[max_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part1_gas_communication_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
# initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 172489043
end_time = 172489661
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
#axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
#hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 3.0 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
exodus = true
[exodus2]
type = Exodus
file_base = IFA_650_4_gas_part2_out
execute_on = 'initial timestep_end'
[]
[checkpoint2]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_2]
type = CSV
#execute_on = 'FINAL'
#create_final_symlink = true
file_base = 'clad2/new'
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain/2D_discrete_finiteStrain.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
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'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ../fine10_rz.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
order = FIRST
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 160.0e-6
burnup_relocation_stop = 0.03
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = THIRD
side_order = FIFTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[mid_penetration]
type = NodalVariableValue
nodeid = 3781 #!!Mesh dependent!!
variable = penetration
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temp
nodeid = 3781 # !! Mesh dependent
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_9/case_9_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark.
#
initial_fuel_density = 10840.0
[GlobalParams]
density = ${initial_fuel_density} # kg/m^3
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 272e-6
buffer_thickness = 97e-6
IPyC_thickness = 33e-6
SiC_thickness = 34e-6
OPyC_thickness = 39e-6
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1576.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 1.5060805e20 # units of fissions/m**3/s
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC_OPyC]
block = 'IPyC OPyC'
strain = finite
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[rest]
block = 'fuel buffer SiC'
strain = finite
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1576.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 2.730961e18 # n/m^2-sec
[]
[fission_gas_release] # Sifgr fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1576.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1576.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1576.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1100 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1850.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 7689600
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
# ro = 369e-6
# ri = 272e-6
# vb = 4/3*pi*(ro^3-ri^3) = 1.26e-10
# buffer density = 1100
# PyC density = 1850
# fill ratio = 1100/1850
# vb*1100/1850 = 7.50e-11
# Must remove 7.50e-11 m^3 from the volume
addition = -7.50e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part2_1p5d_fr_ffrd.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_196_part1_1p5d_fr_ffrd_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 80e-6
plenum_height = 0.0393576
pellet_outer_radius = 3.92e-3
clad_thickness = 0.57e-3
fuel_height = 0.2606424
# nx_c = 2
# nx_p = 11
elem_type = EDGE3
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
# Define auxilary variables
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[tangential_contact_pressure_aux]
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 86400 47386400 47472800 47559200 47645600 94945600 95032000'
y = '0.0065371 1 1 1 1 1 1 1 0.0065371'
scale_factor = 15.5e6
[]
[clad_surface_temperature]
type = PiecewiseBilinear
axis = 1
data_file = clad_temperature.csv
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_volumetric_eigenstrain axial_relocation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
out_of_plane_pressure_function = fuel_axial_pressure
layer_friction_user_object = 1DFriction_secondary
[]
[clad]
block = clad
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
out_of_plane_pressure_function = clad_axial_pressure
layer_friction_user_object = 1DFriction_primary
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = 'fission_gas_released he_prod'
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 95032000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = 'fission_gas_released he_prod'
output = plenum_pressure
refab_time = 95032000
refab_pressure = 8.2e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[clad_temp]
type = FunctionDirichletBC
function = clad_surface_temperature
variable = temperature
boundary = 2
[]
[]
[UserObjects]
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 10
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.02606424
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.24761028
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.02606424
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[terminator]
type = Terminator
expression = 'max_axial_relocation_strain > 0.25'
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.00914 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
[fuel_dispersal]
type = UO2Dispersal
block = fuel
axial_relocation_object = axial_relocation
layered_average_burnup = layered_average_burnup
layered_average_hoop_strain = layered_average_hoop_strain
dispersal_model = ONE_MM_TWO_PERCENT_STRAIN
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
rod_ave_lin_pow = power_history
temperature = temperature
axial_relocation_object = axial_relocation
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[]
[VectorPostprocessors]
[cladding_outer]
type = NodalValueSampler
boundary = 5
variable = disp_x
sort_by = y
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
# CHANGE
gap_thickness_threshold = 0.000050
[]
[]
[Postprocessors]
[volume_fuel_dispersed]
type = LayeredElementIntegralMaterialProperty
block = fuel
mat_prop = dispersed
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
[]
[mass_fuel_dispersed]
type = ParsedPostprocessor
pp_names = volume_fuel_dispersed
expression = '10431 * volume_fuel_dispersed'
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
n_startup_steps = 1
end_time = 95033429.6
dtmax = 20
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = fuel
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_axial_relocation_strain]
type = ElementExtremeValue
value_type = max
variable = axial_relocation_strain
block = fuel
execute_on = 'initial timestep_end'
[]
[he_prod]
type = IFBAHeProduction
b10_load = 9.27165354e-5
b10_enrich = 0.5
burnup = average_burnup
zrb2_thick = 10e-6
fuel_out_rad = 9.32e-3
ifba_len = 0.3
u235_enrich = 0.05
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = fuel
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
layered = true
fuel_pellet_blocks = 'fuel'
fuel_pin_geometry = fuel_pin_geometry
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(test/tests/standard_lwr_outputs_action/annular_mini_rod.i)
[GlobalParams]
density = 10431.0
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = annular_mini_rodlet.e
[]
[]
[Variables]
[temperature]
initial_condition = 580.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0.000000 10800'
y = '0.000000 16404.200000' #LHR5
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800'
z = '1.0 1.0 1.0 1.0'
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
scale_factor = 1
x = '0 10800.0'
y = '0.00651 1.0'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = finite
incremental = true
[]
[clad]
block = clad
add_variables = true
strain = finite
incremental = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet_type_1
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 6
num_axial = 2
a_lower = 0.00351
a_upper = 0.02723
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '9 13'
initial_pressure = 2.0e6
startup_time = 0
output_initial_moles = initial_moles
temperature = plenum_temperature ## generated by the standard outputs action
volume = plenum_volume ## generated by the standard outputs action
material_input = fission_gas_released ## generated by the standard outputs action
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
burnup_function = burnup
gbs_model = false
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Postprocessors]
[uncorrected_pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[uncorrected_plenum_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 200
dtmax = 200
dtmin = 200
[]
[StandardLWRFuelRodOutputs]
rod_component = both
[]
[Outputs]
exodus = false
color = false
csv = true
perf_graph = true
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-2kW.i)
################################################################################
#
# Description: LOCA MT-4 Test with constant power level of 1.2 kW/m
#
#
# External files:
# axial peaking factor file MT4_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 110'
y = '1.2e3 1.2e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 57 110'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT4_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 110'
y = '0.28 0.28'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_zz
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0'
RPF = RPF
density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.3e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 311 # K
inlet_pressure = 0.28e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = 10
htc_correlation_type = 1
flooding_time = 57.0
flooding_rate = 0.127 # m/s
initial_temperature = 1140 # K
initial_power = 1.776 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 58.2
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/axial_relocation/uo2_pulverization_phasefield.i)
# This file is to test the phase-field based pulverization criterion for UO2 fuel
# with evolve_bubble_pressure_hbs = false and using the 2D phase field criterion
# for pulverization.
# In the test 5 axial fuel slices are modeled without cladding with an outer fuel
# radius of 4.5 mm and slice height of 0.1 m. Ten radial finite elements are used.
# The burnup increases linearly from the fuel centerline to the fuel surface.
# Temperature is held at constant T = 673.15 K from t = 0 to t = 100, followed
# by a ramp in temperature from t = 100 to t = 110. Pulverization will occur
# during the ramp only, in the rim region where a significant amount of high burnup
# structure formation has begun. Local pulverization is tracked with the material
# property pulverized, which is 0 where pulverization has not occured and 1 where
# it has occurred. This material property is output to the exodus file for this test.
# At each time step, the porosity in the HBS region is calculated at each radial
# position using the correlation due to Kampf in the UO2Thermal material.
# The porosity, along with the hydrostatic stress, are used to calculate the
# critical pressure for grain boundary fracture using data from fits to phase-field
# fracture simulations. The current pressure of the most likely bubble
# size is compared to the critical pressure to determine whether pulverization has
# occurred at each quadrature point.
# Based upon the conditions and threshold given above at t = 110 s the outer three
# elements should be completely pulverized. The inner radius of the third element
# is at a radius of 3.150 mm. Therefore the layered averaged pulverized fuel volume
# (in each layer in this case) is analytically determined by:
#
# V_p = pi * L * (R_o^2 - R_p^2)
#
# where L is the slice height (0.1 m), R_o is the outer fuel radius, and R_p is the
# radius into the fuel at which pulverization ends. Therefore:
#
# V_p = pi * (0.1) * (4.5e-3^2 - 3.150e-3^2)
# V_p = 3.24448e-6 m^3 in each layer.
#
# The layered_pulverized_fuel_volume AuxVariable computed by BISON gives
# a layered volume of pulverized fuel as 3.24448e-6 m^3.
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
include_clad = false
fuel_height = 0.5
include_plenum = false
nx_p = 10
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 673.15, 673.15+(t-100)*15.5)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = MaterialRealAux
block = fuel
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = '10 12'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
hbs_model = true
hbs_material = hbs_formation
evolve_bubble_pressure_hbs = false
[]
[uo2pulverizationmesoscale]
type = UO2PulverizationMesoscale
block = fuel
temperature = temperature
output_properties = pulverized
pulverization_criterion_type = phase_field_2D
outputs = exodus
[]
[dummy_stress]
type = GenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-1e7 -1e7 -1e7 0 0 0'
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = HighBurnupStructureFormation
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized_aux
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 110
dt = 1
[]
[Outputs]
exodus = true
[]
(examples/1.5D_rodlet_10pellets/1_5D.i)
# Model is of a 10 pellet stack of fuel modeled in 1.5d
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.00056
fuel_height = 0.1186
plenum_height = 0.027
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temperature]
initial_condition = 580.0 # set initial temperature to coolant inlet
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.5e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
block = fuel # fission rate applied to the fuel (block 2) only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
eigenstrain_names = 'fuelthermal_strain swelling_strain fuel_relocation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
outputs = none
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
block = clad
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
outputs = none
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
order = CONSTANT
family = MONOMIAL
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain
block = clad
execute_on = timestep_end
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[relocation_strain]
type = MaterialRealAux
variable = relocation
property = relocation_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = 2
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.5e6
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.314
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
variable = temperature
boundary = 2
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = fuel
gas_swelling_model_type = SIFGRS
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = swelling_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000.0
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
gbs_model = true
grain_radius = grain_radius
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'zrycreep'
[]
[zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
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
# scale_factor = -1
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 = temperature
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temperature
burnup_function = burnup
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[ave_fuel_temp]
type = ElementAverageValue
block = fuel
variable = temperature
[]
[central_fuel_temp]
type = NodalVariableValue
nodeid = 262 #Mesh dependent (0.0041, 0.05661)
variable = temperature
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
### Comparisons for 1.5D work, mesh specific #################### # von Mises Stress
[top_vonMises_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = vonmises_stress
[]
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = vonmises_stress
[]
[bottom_vonMises_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = vonmises_stress
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = fuel
[]
[top_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = vonmises_stress
[]
[top_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = vonmises_stress
[]
[center_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = vonmises_stress
[]
[center_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = vonmises_stress
[]
[bottom_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = vonmises_stress
[]
[bottom_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = vonmises_stress
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
# radial stress
[top_stress_rr_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = stress_xx
[]
[center_stress_rr_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = stress_xx
[]
[bottom_stress_rr_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = stress_xx
[]
[average_stress_rr_fuel]
type = ElementAverageValue
variable = stress_xx
block = fuel
[]
[top_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = stress_xx
[]
[top_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = stress_xx
[]
[center_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = stress_xx
[]
[center_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = stress_xx
[]
[bottom_stress_rr_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = stress_xx
[]
[bottom_stress_rr_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = stress_xx
[]
[average_stress_rr_clad]
type = ElementAverageValue
variable = stress_xx
block = clad
[]
# radial strain
[top_strain_rr_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = strain_xx
[]
[center_strain_rr_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = strain_xx
[]
[bottom_strain_rr_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = strain_xx
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = strain_xx
block = fuel
[]
[top_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = strain_xx
[]
[top_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = strain_xx
[]
[center_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = strain_xx
[]
[center_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = strain_xx
[]
[bottom_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = strain_xx
[]
[bottom_strain_rr_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = strain_xx
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = strain_xx
block = clad
[]
# effective creep strain
[top_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = creep_strain
[]
[top_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = creep_strain
[]
[center_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = creep_strain
[]
[center_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = creep_strain
[]
[bottom_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = creep_strain
[]
[bottom_creep_strain_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = creep_strain
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = creep_strain
block = clad
[]
### Nodal displacements
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[top_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 63 #mesh dependent, at (0.00418, 0.09219)
[]
[top_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 68 #mesh dependent, at (0.00474, 0.09219)
[]
[center_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 36 #mesh dependent, at (0.00418, 0.05661)
[]
[center_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 43 #mesh dependent, at (0.00474, 0.05661)
[]
[bottom_disp_r_clad_inner]
type = NodalVariableValue
variable = disp_x
nodeid = 9 #mesh dependent, at (0.00418, 0.02103)
[]
[bottom_disp_r_clad_outer]
type = NodalVariableValue
variable = disp_x
nodeid = 16 #mesh dependent, at (0.00418, 0.02103)
[]
### Nodal temperatures
[top_temp_fuel]
type = NodalVariableValue
variable = temperature
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_temp_fuel]
type = NodalVariableValue
variable = temperature
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_temp_fuel]
type = NodalVariableValue
variable = temperature
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[top_temp_clad_inner]
type = NodalVariableValue
variable = temperature
nodeid = 63 #mesh dependent, at (0.00418, 0.09219)
[]
[top_temp_clad_outer]
type = NodalVariableValue
variable = temperature
nodeid = 68 #mesh dependent, at (0.00474, 0.09219)
[]
[center_temp_clad_inner]
type = NodalVariableValue
variable = temperature
nodeid = 36 #mesh dependent, at (0.00418, 0.05661)
[]
[center_temp_clad_outer]
type = NodalVariableValue
variable = temperature
nodeid = 43 #mesh dependent, at (0.00474, 0.05661)
[]
[bottom_temp_clad_inner]
type = NodalVariableValue
variable = temperature
nodeid = 9 #mesh dependent, at (0.00418, 0.02103)
[]
[bottom_temp_clad_outer]
type = NodalVariableValue
variable = temperature
nodeid = 16 #mesh dependent, at (0.00418, 0.02103)
[]
### Nodal penetration
[top_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
### Nodal contact pressure
[top_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
### End of 1.5D comparisons
[center_effective_creep_rate_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent
variable = creep_strain_rate
[]
[center_effective_creep_rate_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent
variable = creep_strain_rate
[]
[effective_creep_strain_rate]
type = ElementAverageValue
variable = creep_strain_rate
block = clad
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[densification]
type = ElementAverageValue
variable = densification
block = fuel
[]
[volumetric_swelling]
type = ElementAverageValue
variable = volumetric_swelling_strain
block = fuel
[]
[relocation]
type = ElementAverageValue
variable = relocation
block = fuel
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/axial_relocation/ad_uo2_pulverization_mesoscale.i)
# This file is to test the mesoscale-informed pulverization criterion for UO2 fuel.
# In the test 5 axial fuel slices are modeled without cladding with an outer fuel
# radius of 4.5 mm and slice height of 0.1 m. Ten radial finite elements are used.
# The burnup increases linearly from the fuel centerline to the fuel surface.
# Temperature is held at constant T = 900 K from t = 0 to t = 100, followed
# by a ramp in temperature from t = 100 to t = 110. Pulverization will occur
# during the ramp only, in the rim region where a significant amount of high burnup
# structure formation has begun. Local pulverization is tracked with the material
# property pulverized, which is 0 where pulverization has not occured and 1 where
# it has occurred. This material property is output to the exodus file for this test.
# At each time step, the porosity in the HBS region is calculated at each radial
# position using the correlation due to Kampf in the UO2Thermal material.
# The porosity, along with the grain boundary strength and hydrostatic stress, are
# used to calculate the critical pressure for grain boundary fracture by the
# UO2PulverizationMesoscale material. The current pressure of the most likely bubble
# size is compared to the critical pressure to determine whether pulverization has
# occurred at each quadrature point.
# Based upon the conditions and threshold given above at t = 110 s the outer three
# elements should be completely pulverized. The inner radius of the third element
# is at a radius of 3.150 mm. Therefore the layered averaged pulverized fuel volume
# (in each layer in this case) is analytically determined by:
#
# V_p = pi * L * (R_o^2 - R_p^2)
#
# where L is the slice height (0.1 m), R_o is the outer fuel radius, and R_p is the
# radius into the fuel at which pulverization ends. Therefore:
#
# V_p = pi * (0.1) * (4.5e-3^2 - 3.150e-3^2)
# V_p = 3.24448e-6 m^3 in each layer.
#
# The layered_pulverized_fuel_volume AuxVariable computed by BISON gives
# a layered volume of pulverized fuel as 3.24448e-6 m^3.
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
include_clad = false
fuel_height = 0.5
include_plenum = false
nx_p = 10
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 900, 900+(t-100)*200)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = ADMaterialRealAux
block = fuel
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = '10 12'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
hbs_model = true
hbs_material = hbs_formation
[]
[uo2pulverizationmesoscale]
type = ADUO2PulverizationMesoscale
block = fuel
temperature = temperature
output_properties = pulverized
outputs = exodus
[]
[dummy_stress]
type = ADGenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-1e7 -1e7 -1e7 0 0 0'
[]
[fuel_thermal]
type = ADUO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = ADHighBurnupStructureFormation
block = fuel
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized_aux
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 110
dt = 1
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_twentyslice.i)
# Model is of a 20 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 20
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain fuel_volumetric_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
fuel_pin_geometry = pin_geometry
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
penalty = 1e7
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4 #8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_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
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 231 # Global node id 232, at coordinates (0.0, 1.71774, 0.0)
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 847 #coords (0.0041275, 3.62274)
[]
[top_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 153 #coords (0.0042164, 3.62274)
[]
[plenum_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 180 #coords (0.0042164, 3.96053)
[]
[top_radial_strain_fuel]
type = ElementalVariableValue
variable = strain_xx
elementid = 403
[]
[top_axial_strain_fuel]
type = ElementalVariableValue
elementid = 403
variable = strain_yy
[]
[top_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 72
[]
[top_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 72
[]
[plenum_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 80
[]
[plenum_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 80
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[pellet_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_surface_temp'
#[]
#[pellet_center_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 12
# sort_by = y
# outputs = 'outfile_FCT'
#[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[outfile_fuel_surface_temp]
# type = CSV
# execute_on = linear
#[]
#[outfile_FCT]
# type = CSV
# execute_on = linear
#[]
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/thermalUO2/ad_thermalUO2_test.i)
[Mesh]
[mesh]
type = FileMeshGenerator
file = pelletfine1_rz.e
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 300.0 # set initial T to ambient
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
block = 2
[]
[burnup]
order = FIRST
family = LAGRANGE
block = 2
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
block = 2
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
block = 2
value = 1.183e19 # corrected average power to 200 W/cm
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
block = 2
execute_on = linear
[]
[burnup]
type = ConstantAux
variable = burnup
value = 0.001
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[ConstantT]
type = ADDirichletBC
boundary = 10
variable = T
value = 500
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
temperature = T
burnup = burnup
initial_porosity = 0.015
[]
[density]
type = ParsedMaterial
block = 2
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '100 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
l_max_its = 60
nl_max_its = 15
nl_rel_tol = 1e-9
nl_abs_tol = 1e-10
l_tol = 1e-5
[]
[Outputs]
file_base = ad_out
[exodus]
type = Exodus
[]
[]
(assessment/LWR/validation/Super_Ramp/analysis/PK62/PK62_weighted_gap_VCP.i)
# This assessment case requires increasing the default automatic differentiation
# vector (AD size). At the time of writing, the default size is 50. This test
# requires, at least, 56. The minimum size required for a test to run can be
# specified in the 'assesment' file via "min_ad_size". To configure MOOSE
# to increase the AD vector size, one can use the command below in the MOOSE
# folder to expand this size, e.g., to 200:
#
# ./configure --with-derivative-type=sparse --with-ad-indexing-type=global --with-derivative-size=200
# physical constants
R = 8.3143 # J/mol*K -- THIS SHOULD BE EDITED TO USE PHYSICALCONSTANTS' VALUE
# fuel isotope fractions and fission energy
energy_per_fission = 3.28451e-11 # J/fission
isotope_fraction_U235 = 0.02985
isotope_fraction_U238 = 0.97015
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# rod geometry
pellet_quantity = 29 # (-)
pellet_height = 0.010862 # m
pellet_outer_radius = 4.57e-3 # m
clad_gap_width = 75.0e-6 # m
clad_thickness = 0.725e-3 # m
clad_bot_gap_height = 1.0e-3 # m
bottom_clad_height = 15.5e-3 # m
top_clad_height = 15.5e-3 # m
clad_top_gap_height = 32.5e-3 # m
fuel_volume_ratio = 1.0 # (-)
rod_input_power_scale_factor = 0.376004 # m (rod height)
# variable and kernel initial values
initial_temperature = 293.15 # K
gravity_constant = -9.81 # m/s^2
# fuel/cladding contact
c_normal = 1e+05 # (-)
jump_distance_model = 'LANNING'
roughness_primary = 2e-6 # (-)
roughness_secondary = 1e-6 # (-)
roughness_coef = 3.2 # (-)
relocation_activation1 = 5000 # W/m
max_relocation_recovery_fraction = 0.5 # (-)
relocation_scaling_factor = 1 # (-)
# plenum parameters
initial_plenum_pressure = 2.25e6 # Pa
startup_time = 0 # s
# fuel/clad material properties
initial_fuel_density = 10420.0 # kg/m^3
initial_fuel_porosity = 0.049 # (-)
initial_grain_radius = 17.16e-6 # m
fuel_cracking_stress = 1.68e8 # Pa
fuel_shear_retention_factor = 0.1 # (-)
fuel_max_stress_correction = 0 # (-)
stress_free_temperature = 293.15 # K
cladding_density = 6550.0 # kg/m^3
# numerical options
damper_max_temperature_increment = 150.0 # K (was 30 K)
l_max_its = 35
l_tol = 1e-5
nl_max_its = 30
nl_rel_tol = 2e-6
nl_abs_tol = 1e-5
start_time = 0.0 # s
n_startup_steps = 1
dtmax = 1.0e6 # s
dtmin = 1.0 # s
Timestepper_dt = 100 # s
Timestepper_optimal_iterations = 15
Timestepper_iteration_window = 3
# irradiation history
end_time = 76630068.0 # s
# data files
power_history_data_file = 'alhr_history.csv'
axial_power_factors_data_file = 'axial_lhr_factors.csv'
clad_out_temp_data_file = 'temp_outer_clad_history.csv'
axial_temp_factors_data_file = 'axial_temp_factors.csv'
coolant_pressure_data_file = 'pressure_coolant.csv'
fast_neutron_flux_data_file = 'fast_neutron_flux.csv'
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = true
initial_porosity = ${initial_fuel_porosity}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 80
patch_update_strategy = iteration
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = ${pellet_quantity}
pellet_height = ${pellet_height}
pellet_outer_radius = ${pellet_outer_radius}
pellet_mesh_density = customize
nx_p = 11
ny_p = 168
clad_mesh_density = customize
nx_c = 4
ny_c = 84
clad_gap_width = ${clad_gap_width}
clad_thickness = ${clad_thickness}
clad_bot_gap_height = ${clad_bot_gap_height}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
clad_top_gap_height = ${clad_top_gap_height}
ny_cu = 3
ny_cl = 3
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
block = '1 3'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 3'
scaling = 1.0e3
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 3'
scaling = 1.0e3
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_power_factors]
type = PiecewiseBilinear
data_file = ${axial_power_factors_data_file}
axis = 1
[]
[clad_out_temp]
type = PiecewiseLinear
data_file = ${clad_out_temp_data_file}
format = columns
[]
[axial_temp_factors]
type = PiecewiseBilinear
data_file = ${axial_temp_factors_data_file}
axis = 1
[]
[clad_temp_bc]
type = CompositeFunction
functions = 'clad_out_temp axial_temp_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = ${coolant_pressure_data_file}
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
format = columns
[]
[axial_power_constant]
type = ConstantFunction
value = 1
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = ${initial_grain_radius}
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = ${initial_fuel_porosity}
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
temperature = temperature
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
temperature = temperature
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = ${gravity_constant}
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
block = clad
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[porosity]
type = PorosityAuxUO2
block = pellet
variable = porosity
execute_on = linear
[]
[pelletid]
type = PelletIdAux
block = pellet
variable = pellet_id
fuel_pin_geometry = pin_geometry
number_pellets = ${pellet_quantity}
execute_on = initial
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[]
[Burnup]
[burnup]
block = pellet
fuel_volume_ratio = ${fuel_volume_ratio}
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
fuel_pin_geometry = pin_geometry
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = ${c_normal}
[]
[]
[ThermalContactMortar]
[thermal]
secondary_variable = temperature
primary_boundary = 5
secondary_boundary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = ${jump_distance_model}
plenum_pressure = plenum_pressure
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
contact_pressure = mechanical_normal_lm
layer_thickness = layer_thickness_action
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = 5
outer_surfaces = 10
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${R}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
density = ${initial_fuel_density}
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
burnup_function = burnup
initial_grain_radius = ${initial_grain_radius}
[]
[fuel_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = ${fuel_cracking_stress}
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = ${fuel_shear_retention_factor}
max_stress_correction = ${fuel_max_stress_correction}
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
relocation_activation1 = ${relocation_activation1}
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = ${max_relocation_recovery_fraction}
relocation_scaling_factor = ${relocation_scaling_factor}
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
hydrostatic_stress = hydrostatic_stress
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
res_param_option = HETEROGENEOUS_WHITE
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
fuel_pin_geometry = pin_geometry
[]
[]
#### This is the part where VCP is set up
[Preconditioning]
[vcp]
type = VCP
full = true
# condense out the normal LM from mechanical contact and the LM from thermal contact
lm_variable = 'mechanical_normal_lm thermal_thermal_lm'
primary_variable = 'disp_x temperature'
# we use LU to solve the system after condensation
# AMG and other solver types have shown convergence for simpler mechanical/thermo-mechanical contact problems but has not luck with this one
preconditioner = 'LU'
is_lm_coupling_diagonal = true
adaptive_condensation = true
[]
[]
[Dampers]
[maxincrement]
type = MaxIncrement
max_increment = ${damper_max_temperature_increment}
variable = temperature
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
# IMPORTANT: we should not specify the pc_type below, otherwise the VCP setting will be overriden
petsc_options_iname = ' -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ' 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
line_search = 'none'
verbose = true
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${Timestepper_dt}
optimal_iterations = ${Timestepper_optimal_iterations}
iteration_window = ${Timestepper_iteration_window}
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[total_rod_integral_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[total_rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${rod_input_power_scale_factor}
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[contact_dof]
type = ContactDOFSetSize
variable = 'mechanical_normal_lm'
subdomain = 'secondary_lower'
execute_on = 'nonlinear timestep_end'
[]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage'
execute_on = 'FINAL'
[]
[]
[VectorPostprocessors]
[temperature_post]
type = NodalValueSampler
variable = temperature
boundary = '10'
sort_by = y
[]
[contact_post]
type = NodalValueSampler
variable = mechanical_normal_lm
boundary = '10'
sort_by = y
[]
[disp_x]
type = NodalValueSampler
variable = disp_x
boundary = '10'
sort_by = y
[]
[disp_y]
type = NodalValueSampler
variable = disp_y
boundary = '10'
sort_by = y
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[pbz]
type = PelletBrittleZone
block = pellet
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = ${pellet_quantity}
execute_on = 'initial linear'
[]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = mechanical_normal_lm
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
[]
(test/tests/ifba_he_production/ifba_only_template.i)
#
# 2-D RZ One Pellet IFBA Test - IFBA He generation only
#
# This test is of a single pellet with cladding and a specified initial
# pressure of He fill gas and IFBA layer .
# The initial loading of B-10 is converted to He gas and adds to the
# plenum pressure. No fission gas production is included in this model. This
# allows the effect of the IFBA layer to be seen clearly.
#
# The power is ramped up and held constant to heat the fill gas and establish
# an initial "hot" pressure. Since there is no fission gas production or
# release in this model, the pressure at temperature should be able to be
# calculated and compared to the BISON result.
#
# This case builds on the baseline case. The amount of He added due to IFBA
# can be calculated and the BISON result checked.
#
# This input template is used for a set of tests exercising the main input
# options for the IFBA postprocessor.
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain'
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
gas_released = null
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = he_prod
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = 'fuel_thermal_strain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = 'clad_thermal_strain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e6 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.05175 #BWR change: length of fuel stack in meters (5*pellet height)
[]
[he_prod]
type = IFBAHeProduction
[]
[null]
type = FunctionValuePostprocessor
function = 0
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = SmearedTwoPelletOneType2D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000 #TM default value
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1.e20
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[fuel_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'fuel'
fraction = 0.51
num_points = 20
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[clad_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'clad'
fraction = 0.51
num_points = 20
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[]
[Outputs]
exodus = true
color = false
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/2D_plane_strain_fretting_wear/fretting-wear-initial.i)
initial_fuel_density = 10431.0
[GlobalParams]
temperature = temp
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = refined_excitation_better_mesh.e
[]
construct_node_list_from_side_list = true
patch_size = 100 # For contact algorithm
[]
[Variables]
[temp]
initial_condition = 580.0 # set initial temp to ambient
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y '
converge_on = 'disp_x disp_y temp'
material_coverage_check = false
kernel_coverage_check = false
# restart_file_base = planestrain_grid_aux_vars_out_cp/LATEST
[]
[AuxVariables]
[fission_rate]
block = pellet_type_1
[]
[burnup]
block = pellet_type_1
[]
[fast_neutron_flux]
block = 'clad grid'
[]
[fast_neutron_fluence]
block = 'clad grid'
[]
[relocation_strain]
order = CONSTANT
family = MONOMIAL
[]
[worn_depth]
order = FIRST
family = LAGRANGE
block = 'spacer_clad_mechanical_secondary_subdomain'
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[pressure_var] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '0 1e4'
y = '0 1'
[]
[pressure_var_variable] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = ParsedFunction
expression = 'if(t < 1e4, 1, 1 + sin((t-1e4)*pi/10.0) * (t-1e4))'
[]
[]
[Physics/SolidMechanics/Dynamic]
[pellets]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = pellet_type_1
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = clad
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[grid]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = grid
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'grid_thermal_eigenstrain grid_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
block = 'pellet_type_1 clad grid'
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
block = 'pellet_type_1 clad'
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[spacer_clad_mechanical]
formulation = mortar
model = coulomb
primary = 101
secondary = 102
c_normal = 1e+16 # 1e+7
c_tangential = 1e+20
friction_coefficient = 0.4
# Do not apply dynamic stabilization
newmark_beta = 0.0001
newmark_gamma = 0.5
capture_tolerance = 0.0
mortar_dynamics = true
interpolate_normals = false
generate_mortar_mesh = true
wear_depth = worn_depth
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical_real]
formulation = mortar
model = frictionless
primary = 7
secondary = 8
c_normal = 1e+16 #
c_tangential = 1e+16
friction_coefficient = 0.4
# Do not apply dynamic stabilization
newmark_beta = 0.0001
newmark_gamma = 0.5
capture_tolerance = 0.0
mortar_dynamics = true
interpolate_normals = false
generate_mortar_mesh = true
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = 7
secondary_boundary = 8
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 21
axial_axis = 2
density = ${initial_fuel_density}
a_lower = -1e-3 # mesh dependent!
a_upper = 1e-3 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
RPF = RPF
[]
[]
[AuxKernels]
[worn_depth]
type = MortarArchardsLawAux
variable = worn_depth
primary_boundary = 101
secondary_boundary = 102
primary_subdomain = 'spacer_clad_mechanical_primary_subdomain'
secondary_subdomain = 'spacer_clad_mechanical_secondary_subdomain'
displacements = 'disp_x disp_y'
friction_coefficient = 0.5
energy_wear_coefficient = 0.1e-9
normal_pressure = spacer_clad_mechanical_normal_lm
execute_on = 'TIMESTEP_END'
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[relocation_strain]
type = MaterialRealAux
property = relocation_strain
variable = relocation_strain
block = pellet_type_1
execute_on = timestep_end
[]
[]
[BCs]
# Define boundary conditions
[no_y_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_y
boundary = 15
value = 0.0
[]
[no_x_all] # pin pellets and clad along axis of symmetry (x)
type = DirichletBC
variable = disp_x
boundary = 16
value = 0.0
[]
[no_y_all_grid] # pin pellets and clad along axis of symmetry (y)
type = FunctionDirichletBC
variable = disp_y
boundary = '112'
function = 'if(t < 1.0e4,1.0e-4 * t/1.0e4 - 1.0e-5,0.9e-4)'
[]
[no_x_all_grid] # pin pellets and clad along axis of symmetry (x)
type = DirichletBC
variable = disp_x
boundary = '112'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = pressure_var # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxBC
boundary = '2'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 580.0
final = 580.0
duration = 1.0e4 #duration of initial power ramp
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = pellet_type_1
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_solid_mechanics_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
temperature = temp
eigenstrain_name = 'fuel_volumetric_eigenstrain'
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
density = 10431.0
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1'
youngs_modulus = 906e6
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 1.e20
relocation_activation1 = 5000
axial_axis = 2
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'clad'
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'clad_irradiation_eigenstrain'
[]
[grid_thermal]
type = HeatConductionMaterial
block = 'grid'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[grid_elasticity_tensor]
type = ZryElasticityTensor
block = 'grid'
[]
[grid_creep_model]
type = ZryCreepHayesHoppeUpdate
block = 'grid'
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[grid_stress]
type = ComputeMultipleInelasticStress
block = 'grid'
tangent_operator = elastic
inelastic_models = 'grid_creep_model'
[]
[grid_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'grid'
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'grid_thermal_eigenstrain'
[]
[grid_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = grid
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'grid_irradiation_eigenstrain'
[]
[fission_gas_release] # Forsberg-Massih fission gas release mode
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius = 10.0e-6
#external_pressure = 40e6
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431.0
[]
[grid]
type = StrainAdjustedDensity
block = grid
density = 6560
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-10'
snesmf_reuse_base = true
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 45
nl_rel_tol = 1e-10 # was -7 and nl 25. Tightening tangential contact forces.
nl_abs_tol = 1e-12
[TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[]
start_time = 0.0
end_time = 1.0e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
time_t = '1e4 1e5 1e6'
time_dt = '2e2 1e4 1e5'
growth_factor = 1.4
iteration_window = 5.0
optimal_iterations = 35
[]
dtmax = 2e5 # Larger causes instabilities 2e6
dtmin = 1
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[average_interior_clad_temperature] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[average_centerline_fuel_temperature] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial timestep_end'
[]
[plenum_volume] # gas volume
type = InternalVolume
boundary = 9
addition = 1.3e-5 #rough guess of plenum volume/unit length of fuel
execute_on = 'initial linear'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_generated] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = linear
[]
[fission_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
execute_on = timestep_end
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_generated
[]
[]
[VectorPostprocessors]
[contact_pressure]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = spacer_clad_mechanical_normal_lm
boundary = 102
[]
[frictional_pressure]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = spacer_clad_mechanical_tangential_lm
boundary = 102
[]
[worn_depth]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = worn_depth
boundary = 102
execute_on = TIMESTEP_END
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
max_rows = 25
[]
checkpoint = true
[]
(test/tests/burnup_action/burnup_with_actions.i)
# This test is designed as a companion test to the burnup_without_actions.i input
# to demonstrate which input file blocks are created by the Burnup action.
#
# In this simple two block problem, the power profile is designed such that the
# power provided to the top block, block 2, is nearly twice that of the power on
# the bottom block, block 1. As a result, the fission rate on block 2 is exactly
# twice the fission rate on block 1, and the burnup on block 2 is twice the value
# of the burnup on block 1.
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
energy_per_fission = 3.20435313e-11 # J/fission (200 MeV)
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = two_separate_blocks.e
[]
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
# [AuxVariables]
# [fission_rate_1]
# block = 1
# []
# [fission_rate_2]
# block = 2
# []
# [burnup_1]
# block = 1
# []
# [burnup_2]
# block = 2
# []
# []
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100'
y = '0 40000'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.0 0.01 0.0105 0.0205'
y = '0 100'
z = '1 1 2 2 1 1 2 2'
axis = 1
[]
# [burnup1]
# type = BurnupFunction
# rod_ave_lin_pow = power_profile
# axial_power_profile = axial_peaking_factors
# num_radial = 80
# num_axial = 20
# a_upper = 0.01
# a_lower = 0.0
# fuel_inner_radius = 0.0
# fuel_outer_radius = 0.01
# []
# [burnup2]
# type = BurnupFunction
# rod_ave_lin_pow = power_profile
# axial_power_profile = axial_peaking_factors
# num_radial = 80
# num_axial = 20
# a_upper = 0.0205
# a_lower = 0.0105
# fuel_inner_radius = 0.0
# fuel_outer_radius = 0.01
# []
[]
[Burnup]
[burnup1]
block = 1
base_name = action_block1
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01
a_lower = 0.0
fuel_inner_radius = 0.0
fuel_outer_radius = 0.01
fuel_volume_ratio = 1.0
[]
[burnup2]
block = 2
base_name = action_block2
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.0205
a_lower = 0.0105
fuel_inner_radius = 0.0
fuel_outer_radius = 0.01
fuel_volume_ratio = 1.0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source_block1]
type = NeutronHeatSource
variable = temp
block = 1
burnup_function = burnup1
[]
[heat_source_block2]
type = NeutronHeatSource
variable = temp
block = 2
burnup_function = burnup2
[]
[]
# [AuxKernels]
# [BurunupGrid1]
# type = BurnupGrid
# block = 1
# execute_on = 'initial linear'
# burnup_function = burnup1
# variable = fission_rate_1
# fission_rate = fission_rate_1
# []
# [BurunupGrid2]
# type = BurnupGrid
# block = 2
# execute_on = 'initial linear'
# burnup_function = burnup2
# variable = fission_rate_2
# fission_rate = fission_rate_2
# []
# [BurunupGrid13]
# type = BurnupGrid
# block = 1
# execute_on = 'initial linear'
# burnup_function = burnup1
# variable = burnup_1
# burnup = burnup_1
# []
# [BurunupGrid4]
# type = BurnupGrid
# block = 2
# execute_on = 'initial linear'
# burnup_function = burnup2
# variable = burnup_2
# burnup = burnup_2
# []
# []
[BCs]
[block1_side_bc]
type = DirichletBC
variable = temp
boundary = 1
value = 300
[]
[block2_side_bc]
type = DirichletBC
variable = temp
boundary = 2
value = 300
[]
[]
[Materials]
[fuel_thermal1]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup1
thermal_conductivity_model = NFIR # NFIR thermal conductivity
initial_porosity = 0.05
[]
[fuel_thermal2]
type = UO2Thermal
block = 2
temperature = temp
burnup_function = burnup2
thermal_conductivity_model = NFIR # NFIR thermal conductivity
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = '1 2'
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0
dtmax = 1e4
dtmin = 100
end_time = 5e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[ave_temp_block1]
type = ElementAverageValue
block = 1
variable = temp
execute_on = 'initial timestep_end'
[]
[ave_temp_block2]
type = ElementAverageValue
block = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[rod_power_1]
type = ElementIntegralPower
variable = temp
block = 1
burnup_function = burnup1
execute_on = 'timestep_end'
[]
[rod_power_2]
type = ElementIntegralPower
variable = temp
block = 2
burnup_function = burnup2
execute_on = 'timestep_end'
[]
[rod_burnup_1]
type = RodAverageBurnup
burnup_function = burnup1
execute_on = 'timestep_end'
[]
[rod_burnup_2]
type = RodAverageBurnup
burnup_function = burnup2
execute_on = 'timestep_end'
[]
[]
[Outputs]
csv = true
exodus = false
color = false
perf_graph = true
[console]
type = Console
max_rows = 1
[]
[]
(assessment/LWR/validation/IFA_535/analysis/rod_812/IFA_535_rod_812.i)
# IFA 535.6 rod 812 (Table & Figure references are to IFA-535.pdf)
initial_fuel_density = 10398.06
[GlobalParams]
density = ${initial_fuel_density} #Table 1 (PDF page 14), 94.7% TD #Assuming a TD of 10980.
displacements = 'disp_x disp_y'
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 20 # 50
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = ifa535_rod812.e
[]
[]
[UserObjects]
[fuelPinGeometry]
type = FuelPinGeometry
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 297.0
# If the initial diameter from the mesh
# is compared to the pre & post-ramp diameters, then they should probably
# be compared at the same cladding temperatures.
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1'
initial_condition = 9.36e-6 # 2D grain radius 6um #From rod 810
#2.75e-6 #Table 3.2, 5.5/2 microns (Assuming 3D grain size)
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = avgPower_IFA535rod812.csv
format = columns
#direction = left
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axialPowerPeakingFactor_IFA535rod812.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 212261117 212261147 212264717 212264747 222089867 222090767'
y = '1.4475e-2 1 1 1.4475e-2 1.4475e-2 1 1 1.4475e-2'
[]
[cladTemp]
type = PiecewiseLinear
data_file = avgCladTemp_IFA535rod812.csv
format = columns
#direction = left
scale_factor = 1
[]
[cladPeakingFactors]
type = PiecewiseBilinear
data_file = axialCladTempPeakingFactor_IFA535rod811.csv
scale_factor = 1
axis = 1
[]
[cT]
type = CompositeFunction
functions = 'cladTemp cladPeakingFactors'
[]
[fluxFactor]
type = PiecewiseLinear
data_file = flux_IFA535rod811.csv
format = columns
#direction = left
scale_factor = 1
[]
[fluxValue]
type = CompositeFunction
functions = 'fluxFactor power_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1' # fission rate applied to the fuel (block 2) only
#fission_rate = fission_rate # coupling to the fission_rate aux variable
burnup_function = burnup
#fuel_pin_geometry = fuelPinGeometry
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuelPinGeometry
#a_upper = 337.53e-3 #317.4e-3+20.13e-3 (a_lower+pellet_height),top of fuel stack
#a_lower = 20.13e-3 #From top_bot_clad_height #18.5e-3 #bottom of fuel stack, Figure 3.1
#fuel_inner_radius = 0
#fuel_outer_radius = 4.569e-3 #Table 3.2, from diameter
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0988 0.9012 0 0 0 0'
fuel_volume_ratio = 1.0
#fuel_volume_ratio = 0.9756625712887741 #(dimple fraction) from calculations in fuel_volume_ratio.ipynb
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
axial_power_profile = axial_peaking_factors
#rod_ave_lin_pow = power_profile
#factor = 3.71098e13 #from fluxCalc.xlsx #8.025e17 #Table 3.7, avg. of cycles 8-11, converted to n/(m^2-s)
function = fluxValue
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
# Define mechanical contact between the
# fuel (sideset=10) and the clad (sideset=5)
primary = 5
secondary = 10
#penalty = 1e7 #for kinematic (default method is kinematic)
formulation = penalty #used by rod 810
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
# Define thermal contact between the
# fuel (sideset=10) and the clad (sideset=5)
type = GasGapHeatTransfer
variable = temp
primary = 5 #'4 5 6' #5
secondary = 10 #8 #10
initial_moles = initial_moles # coupling to a postprocessor
# which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor
# which supplies the fission gas addition
roughness_secondary = 1e-6 #default
roughness_primary = 2e-6 #use 2e-6 instead of default
roughness_coef = 3.2 #use 3.2 unless know better
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 212261147
refab_gas_types = He
refab_fractions = 1
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
# pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
# pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
# pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7e6 #pp. 8 of "535.pdf"
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.1e6 #from pp.6 of "535.pdf" for IFA-409
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get
# inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get
# gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get
# fission gas added
output = plenum_pressure # coupling to post processor to
# output plenum/gap pressure
refab_time = 212261147 #212264717 #217722744
refab_pressure = 3.21e6
refab_temperature = 298.15 #449.05
refab_volume = 9.6e-6
displacements = 'disp_x disp_y'
[]
[]
[claddingSurfTemp]
type = FunctionDirichletBC
function = cT
boundary = '1 2 3' #2 # cladding boundary
variable = temp
[]
[]
[Materials]
[density_clad]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6551.0 #Check this value; cladding is Zr-2
[]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet_type_1'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
# temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
initial_porosity = .053 #(1-density/theoreticalDensity)
thermal_conductivity_model = NFIR # thermal conductivity model (independent of reactor type)
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1'
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1'
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 297.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = 'pellet_type_1'
burnup_function = burnup
fuel_pin_geometry = fuelPinGeometry
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.2 #0.02
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = 'clad'
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_creep'
block = 'clad'
[]
[clad_creep] # creep for zircaloy cladding
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 297.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_growth
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10398.06
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1'
temperature = temp
#fission_rate = fission_rate # coupling to fission_rate aux variable
#initial_grain_radius = 9.36e-6 # 2D grain radius 6um #From rod 810
#2.75e-6 #Table 3.2, 5.5/2 microns (Assuming 3D grain size)
grain_radius = grain_radius
gbs_model = true
burnup_function = burnup
#total_densification = 0.009 #Leave at default
initial_porosity = .053 #(1-density/theoreticalDensity)
transient_option = MICROCRACKING
#compute_swelling = true
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200.0
min_value = 200
[]
# [limitDisp]
# type = MaxIncrement
# max_increment = 1e-5
# variable = disp_x
# []
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-3 #1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 222090767 #last time step from avgPower_IFA535rod812.csv
dtmax = 2e6 #1e6
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
force_step_every_function_point = true
timestep_limiting_function = power_profile
max_function_change = 3e20
optimal_iterations = 20 #15
iteration_window = 6
linear_iteration_ratio = 100
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
# volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
[]
[avg_clad_temp]
# average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
[]
[ave_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = 'pellet_type_1'
[]
[input_rod_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[maxCenterlineTemp]
type = NodalExtremeValue
boundary = 12 # pellet_centerline
variable = temp
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/axial_relocation/uo2_pulverization_mesoscale.i)
# This file is to test the mesoscale-informed pulverization criterion for UO2 fuel.
# In the test 5 axial fuel slices are modeled without cladding with an outer fuel
# radius of 4.5 mm and slice height of 0.1 m. Ten radial finite elements are used.
# The burnup increases linearly from the fuel centerline to the fuel surface.
# Temperature is held at constant T = 900 K from t = 0 to t = 100, followed
# by a ramp in temperature from t = 100 to t = 110. Pulverization will occur
# during the ramp only, in the rim region where a significant amount of high burnup
# structure formation has begun. Local pulverization is tracked with the material
# property pulverized, which is 0 where pulverization has not occured and 1 where
# it has occurred. This material property is output to the exodus file for this test.
# At each time step, the porosity in the HBS region is calculated at each radial
# position using the correlation due to Kampf in the UO2Thermal material.
# The porosity, along with the grain boundary strength and hydrostatic stress, are
# used to calculate the critical pressure for grain boundary fracture by the
# UO2PulverizationMesoscale material. The current pressure of the most likely bubble
# size is compared to the critical pressure to determine whether pulverization has
# occurred at each quadrature point.
# Based upon the conditions and threshold given above at t = 110 s the outer three
# elements should be completely pulverized. The inner radius of the third element
# is at a radius of 3.150 mm. Therefore the layered averaged pulverized fuel volume
# (in each layer in this case) is analytically determined by:
#
# V_p = pi * L * (R_o^2 - R_p^2)
#
# where L is the slice height (0.1 m), R_o is the outer fuel radius, and R_p is the
# radius into the fuel at which pulverization ends. Therefore:
#
# V_p = pi * (0.1) * (4.5e-3^2 - 3.150e-3^2)
# V_p = 3.24448e-6 m^3 in each layer.
#
# The layered_pulverized_fuel_volume AuxVariable computed by BISON gives
# a layered volume of pulverized fuel as 3.24448e-6 m^3.
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
include_clad = false
fuel_height = 0.5
include_plenum = false
nx_p = 10
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 900, 900+(t-100)*200)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = MaterialRealAux
block = fuel
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = '10 12'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
hbs_model = true
hbs_material = hbs_formation
[]
[uo2pulverizationmesoscale]
type = UO2PulverizationMesoscale
block = fuel
temperature = temperature
output_properties = pulverized
outputs = exodus
[]
[dummy_stress]
type = GenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-1e7 -1e7 -1e7 0 0 0'
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = HighBurnupStructureFormation
block = fuel
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized_aux
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 110
dt = 1
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-1kW.i)
################################################################################
#
# Description: LOCA MT-6A Test with constant power level of 1.1 kW/m
#
#
# External files:
# axial peaking factor file MT6A_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 150'
y = '1.1e3 1.1e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 60 150'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT6A_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 150'
y = '1.72 1.72'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_zz
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0' #TODO: Looks like it's set for 2.93%!
RPF = RPF
density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e11
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.15e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 310 # K
inlet_pressure = 1.72e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = htc_function
htc_correlation_type = 1
flooding_time = 60.0
flooding_rate = 0.059182 # m/s
initial_temperature = 1175 # K
initial_power = 1.628 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 76.48
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/RIA/REP_Na_4_RIA.i)
# REP Na 4 RIA
initial_fuel_density = 10476.35
[GlobalParams]
density = ${initial_fuel_density} # assumed TD = 10970
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
maximum_lagrangian_update_iterations = 200
acceptable_iterations = 30
acceptable_multiplier = 10
[]
[Mesh]
patch_size = 40
#patch_update_strategy = auto
#partitioner = centroid
#centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = REP_Na4.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[fuel_cond]
order = CONSTANT
family = MONOMIAL
[]
[swelling_strain]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_flux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[SED]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = REPNa4_power_history_Full.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = REPNa4_axial_peaking_Full.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
format = columns
scale_factor = 1.0
xy_data = '0 101325
8640 15499970
124675200 15499970
124718400 101325
125193600 101325
125193610 101325
125193650 500008
125193700 500008
125193900 500008
125194000 101325
125194100 101325'
[]
[temp_ramp] # inlet coolant temp evolution
type = PiecewiseLinear
format = columns
scale_factor = 1.0
xy_data = '0 293.15
8640 591
20476800 591
21859200 600
47692800 600
51840000 593
72144000 593
73440000 586
96940800 586
99360000 583
124675200.0 583
124761600.0 293.150
125193600.0 293.150
125193650.0 553.150
125193900.0 553.150
125194000.0 293.150
125194100.0 293.150'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz axial_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 'clad'
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress axial_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.5678974
a_lower = 0.0045
fuel_inner_radius = 0
fuel_outer_radius = 0.0040959
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0449 0.9551 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_profile
factor = 3e13 #n/m2-s
block = 'clad'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
block = 'clad'
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[fuel_conductance]
type = MaterialRealAux
property = thermal_conductivity
variable = fuel_cond
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[swelling_strain]
type = MaterialRealAux
property = volumetric_swelling_strain
variable = swelling_strain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = axial_creep_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = hoop_plastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = axial_plastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[total_axial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_axial_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = axial_elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_coolant_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_coolant_flux
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
property = critical_heat_flux
variable = critical_heat_flux
boundary = 2
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[ofract_total]
type = MaterialRealAux
property = current_oxygen_weight_frac_total
variable = oxywtfract_total
execute_on = timestep_end
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
property = oxygen_weight_frac_gained_total
variable = oxywtfgain_total
execute_on = timestep_end
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
property = fract_beta_phase
variable = fract_beta_phase
block = 'clad'
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 210 #10
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.3
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[pellet_clad_mechanical_2]
primary = 5
secondary = 410
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 0.1e-6 #2.0e-6
roughness_secondary = 0.1e-6 #0.5e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
emissivity_primary = 0.800 #Emissivity for fuel
emissivity_secondary = 0.325 #Emissivity for clad
refab_time = 125107200
refab_gas_types = He
refab_fractions = 1
contact_coef = 20 #10 default
[]
[]
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.60e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior #plenumTemp
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
# extra_vector_tags = 'ref'
refab_time = 125107200
refab_pressure = 0.301e6
refab_temperature = 293.15
refab_volume = 2.0e-6
[]
[]
[]
[CoolantChannel]
# [convective_clad_surface_water] # apply convective boundary to clad outer surface
# boundary = '1 2 3'
# variable = temp
# inlet_temperature = temp_ramp # K
# inlet_pressure = pressure_ramp # Pa
# inlet_massflux = 3244.044104 # kg/m^2-sec
# rod_diameter = 0.00951 # m
# rod_pitch = 1.26e-2 # m
# coolant_material = 'water'
# compute_enthalpy = true
# oxide_thickness = oxide_thickness # coupled oxide_thickness
# number_axial_zone = 50
# []
#
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
flow_area = 8.74855e-5 #m^2
heated_diameter = 1.172526e-2 #m
hydraulic_diameter = 4.7e-3 #m
heated_perimeter = 2.984513e-2 #m
coolant_material = 'sodium'
compute_enthalpy = true
heat_transfer_mode = 0
oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = 50
rod_diameter = 0.0095 # m
htc_correlation_type = 2
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
#density = 10476.35
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
matpro_poissons_ratio = 1
matpro_youngs_modulus = 1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0 #0.0208
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = 'pin_geometry'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10476.35
total_densification = 0.00675
initial_porosity = 0.045
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
fission_rate = fission_rate
burnup_function = burnup
initial_porosity = 0.045
grain_radius_const = 5.0e-6
gbs_model = false
transient_option = MICROCRACKING_BURNUP
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6550
[]
[clad_thermal]
type = ZryThermal
block = 'clad'
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
temperature = temp
matpro_poissons_ratio = true
matpro_youngs_modulus = true
cold_work_factor = 0.5
fast_neutron_fluence = fast_neutron_fluence
block = 'clad'
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
#inelastic_models = 'clad_zrycreep clad_zryplasticity'
inelastic_models = 'clad_zryplasticity'
block = 'clad'
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
#creeprate_scale_factor = 1
model_irradiation_creep = 1
model_primary_creep = 1
model_thermal_creep = 1
max_inelastic_increment = 0.0001
creeprate_scale_factor = 0
enable = 0
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
max_inelastic_increment = 0.0001
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
compute = 0
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00417789
clad_outer_radius = 0.00475615
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
oxygen_weight_fraction_initial = 0.0012
[]
[phase]
type = ZrPhase
block = 'clad'
numerical_method = 2
temperature = temp
[]
[StrainEnergyDensity]
type = StrainEnergyDensity
block = 'clad'
incremental = 1
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200 # The maximum permissible iterative value for the variable.
min_value = 200 # The minimum permissible iterative value for the variable.
variable = temp # The name of the variable that this damper operates on
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'contact'
contact_line_search_allowed_lambda_cuts = 0
contact_line_search_ltol = 0.5
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 125194100 #125193600 #125194100 is the end time for the RIA
dtmax = 10
dtmin = 1e-7
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = power_profile
max_function_change = 5e5
force_step_every_function_point = true
timestep_limiting_postprocessor = material_timestep
time_t = '125193610 125193620 125193630 125193640 125193650 125193660 125193670 125193680'
time_dt = '10 10 10 10 10 10 10 10'
[]
[Quadrature]
order = FIFTH #SEVENTH
side_order = SEVENTH #Comment out if order = SEVENTH
[]
[]
[Postprocessors]
# [ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
# type = SideAverageValue
# boundary = 9 #For RIA the node number is ##***8479***##
# variable = temp
# execute_on = 'initial linear'
# []
[ave_temp_interior]
type = NodalVariableValue
variable = temp
nodeid = 8479
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[1_rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[3_burnup_GWd]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = 'clad'
variable = vonmises_stress
[]
[z_average_RPF]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = RPF
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = 'clad'
[]
## Nodal values
[FCT] #fuel centerline temperature
type = NodalVariableValue
variable = temp
nodeid = 3866 #(0, 0.303375, 0)
[]
[FST] #fuel surface temperature
type = NodalVariableValue
variable = temp
nodeid = 3823 #(0.0040959, 0.303375, 0)
[]
[CIST] #clad inner surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9557 #(0.0041779, 0.305106, 0)
[]
[COST] #clad outer surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9547 #(0.00475615, 0.305106, 0)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 3823 #(0.0040959, 0.303375, 0)
use_displaced_mesh = true
[]
#######################################
[qpoint_penetration] #FOCE
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 1200
use_displaced_mesh = 1
[]
[penetration] #FOCN
type = NodalVariableValue
variable = penetration
nodeid = 3823
use_displaced_mesh = 1
[]
[contact_pressure] #FOCN
type = NodalVariableValue
variable = contact_pressure
nodeid = 3823
use_displaced_mesh = 1
[]
[gap_cond] #FOCE
type = ElementalVariableValue
variable = gap_cond
elementid = 1200
use_displaced_mesh = 1
[]
[creep_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_creep_strain
elementid = 2981
use_displaced_mesh = 1
[]
[elastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_elastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[plastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_plastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[total_hoop_strain] #COCE
type = ElementalVariableValue
variable = total_hoop_strain
elementid = 2981
use_displaced_mesh = 1
[]
[clad_hoop_stress] #COCE
type = ElementalVariableValue
variable = hoop_stress
elementid = 2981
use_displaced_mesh = 1
[]
[clad_axial_elongation] #COTN
type = NodalVariableValue
variable = disp_y
nodeid = 10755
use_displaced_mesh = 1
[]
[clad_oxide_thickness] #COCE
type = ElementalVariableValue
variable = oxide_thickness
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_htc] #COCE
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_temp] #COCE
type = ElementalVariableValue
variable = coolant_temp
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_flux] #COCE
type = ElementalVariableValue
variable = clad_coolant_flux
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_hmode] #COCE
type = ElementalVariableValue
variable = coolant_channel_hmode
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_htype] #COCE
type = ElementalVariableValue
variable = coolant_channel_htype
elementid = 2981
use_displaced_mesh = 1
[]
[critical_heat_flux] #COCE
type = ElementalVariableValue
variable = critical_heat_flux
elementid = 2981
use_displaced_mesh = 1
[]
[fuel_centerline_temp] #FICN
type = NodalVariableValue
variable = temp
nodeid = 3866
[]
[fuel_surface_temp] #FOCN
type = NodalVariableValue
variable = temp
nodeid = 3823
[]
[clad_inner_surface_temp] #CICN
type = NodalVariableValue
variable = temp
nodeid = 9557
[]
[clad_outer_surface_temp] #COCN
type = NodalVariableValue
variable = temp
nodeid = 9547
[]
[fuel_axial_elongation] #FOTN
type = NodalVariableValue
variable = disp_y
nodeid = 7739
[]
[clad_radial_elongation] #COCN
type = NodalVariableValue
variable = disp_x
nodeid = 9547
[]
[fuel_radial_elongation] #FOCN
type = NodalVariableValue
variable = disp_x
nodeid = 3823
[]
[SED_PPN_O] #COCE
type = ElementalVariableValue
variable = SED
elementid = 2981
use_displaced_mesh = 1
[]
[SED_PPN_I] #CICE
type = ElementalVariableValue
variable = SED
elementid = 2984
use_displaced_mesh = 1
[]
[zz_OFract_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfract_total
elementid = 2981
use_displaced_mesh = 1
[]
[zz_OGain_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = 2981
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = 'clad'
variable = SED
value_type = max
[]
#Post processor to calculate radial average enthalpy. This postprocessor isnt available yet in BISON
[z_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.3
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = z_RAE
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_diameter'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_pellet_diameter'
[]
#Location of peak power node at appoximately 0.3 m in mesh
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = 'outfile_radial_temp'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
#exodus = true
color = false
[outfile_clad_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_pellet_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_radial_temp]
type = CSV
end_time = -100000
[]
[console]
type = Console
output_linear = true
max_rows = 10
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = recover_files
[]
[chkfile]
type = CSV
show = 'ave_temp_interior fis_gas_released FCT average_burnup peak_RAE'
execute_on = 'FINAL'
[]
[exodus]
type = Exodus
time_step_interval = 4
end_time = 125193700
[]
[exodus_RIA]
type = Exodus
time_step_interval = 3
start_time = 125193695
[]
[checkpoint_RIA]
type = Checkpoint
file_base = recover_files_RIA
sync_times = '124761600 125107200 125193600 125193650 125193700 125193700.06 125193700.07 125193700.08 125193700.09 125193700.10 125193700.20 125193700.30 125193700.40 125193700.50 125193700.60 125193700.70 125193700.80 125193700.90 125193701.00 125193701.25 125193701.50 125193701.75 125193702.00 125193702.25 125193702.50 125193702.75 125193703.00 125193704.00 125193705.00'
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
show_material_props = true
[]
(assessment/LWR/validation/IFA_597_3/analysis/rod_8/IFA_597_rod8_frictionless.i)
initial_fuel_density = 10500.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 10
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ifa_597r8.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4'
initial_condition = 6.1074e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = 597-R8_linear_power.csv
format = columns
scale_factor = 1.0526316
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = 597-R8_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 269029548 269030508 269055648 269056588 280124964 280125417'
y = '0 1 1 0.014475 0.014475 0.457 0.457 0.014475'
[]
[flux]
type = PiecewiseLinear
data_file = flux.csv
format = columns
[]
[clad_average_temp]
type = PiecewiseLinear
data_file = 597-R8_clad_outer_temperature.csv
format = columns
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = '3 4'
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3 4'
fission_rate = fission_rate
fraction = 0.95 # per Glyn Rossiter's suggestion
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = '3 4'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.3571
fuel_inner_radius = 0.000
fuel_outer_radius = 0.0052195
fuel_volume_ratio = .994899
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.03347 0.96653 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = 1.3e-6
roughness_primary = 1.38e-6
roughness_coef = 3.2
contact_pressure = contact_pressure
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 269055648
refab_gas_types = He
refab_fractions = 1
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_average_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 #changes to 3.2e6 after 59 MWd/kgUO2
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e5 #changes to 5e5 after 59 MWd/kgUO2
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 269055648
refab_pressure = 5e5
refab_temperature = 500
refab_volume = 6e-6
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4'
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10500.0
[]
[fuel_thermal]
type = UO2Thermal
block = '3 4'
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
initial_porosity = 0.04372
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = '3 4'
temperature = temp
stress_free_temperature = 297
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4'
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4'
burnup_function = burnup
diameter = 0.010439
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.11e-4
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 297
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.04372
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
[]
[density_clad]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = '3 4'
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 280125417
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 20
linear_iteration_ratio = 100
dt = 100
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3 4'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3 4'
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = exodus
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = exodus
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3 4'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.3539 # rod height
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_profile
fuel_outer_radius = 0.0052195
fuel_inner_radius = 0.000
outputs = exodus
[]
[power_tc_location]
type = FunctionValuePostprocessor
function = q
point = '0 0.33319 0'
[]
[TC_temp]
type = NodalVariableValue
variable = temp
nodeid = 7476 # Global NodeID 7477
[]
[elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 1887 # Global NodeID 1888
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = '3 4'
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage TC_temp rod_total_power elongation'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/IFA_432/analysis/IFA_432_Base.i)
# This is a partial input file base with information/features common to all the fuel rods within this assessment.
# NOTE: This file will not run on its own, it is used to create a complete input file in the rod-specific input files.
# Fuel material properties
initial_fuel_density = 10431 # kg/m^3
initial_grain_radius = 3.5e-6 # m
initial_fuel_porosity = 0.05 # (-)
fuel_thermal_expansion_coeff = 10e-6 # K^-1
total_densification = .0043 # (-)
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_density = 6551.0 # kg/m^3
# Rod geometry
fuel_inner_radius = 0.00 # m
a_lower = 0.01494 # m
# Temperature conditions
initial_temperature = 513.3 # K
cladding_temperature_BC = 513.3 # K
stress_free_temperature = 297 # K
# Neutronics and power
energy_per_fission = 3.2e-11 # J/fission
fast_neutron_flux_factor = 1.6e12 # n/m^2-s per W/m
# Coolant pressure ramp parameters
pressure_ramp_x = '-100 0'
pressure_ramp_y = '0.029395 1'
pressure_ramp_factor = 3.447e6 # (-)
# Plenum parameters
initial_plenum_pressure = 1.0135e5 # Pa
startup_time = 0 # s
# Physical constants
ideal_gas_constant = 8.3143 # J/K-mol
# Contact
contact_penalty = 1e14 # (-)
roughness_primary = 2.16e-6
roughness_secondary = 6.35e-7
kennard_coefficient = 0.2173
# Relocation
relocation_activation1 = 5000 # W/m
burnup_relocation_stop = 0.00821 # FIMA
# Postprocessor parameters
power_lower_TC_point = '0 0.50389 0'
# Numerical options
damper_max_temperature_increment = 50.0 # K
l_max_its = 80
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
n_startup_steps = 1
dtmin = 1 # s
Timestepper_dt = 900 # s
# Irradiation history
end_time = 29700 # s
[GlobalParams]
density = ${initial_fuel_density} # initial fuel density 95% of theoretical (10980 kg/m3)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4 5'
initial_condition = ${initial_grain_radius}
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${bol_power_data_file}
scale_factor = 1
format = columns
[]
[axial_peaking_factor]
type = PiecewiseBilinear
data_file = ${bol_axial_data_file}
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factor'
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = '3 4 5'
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
incremental = true
temperature = temperature
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = '3 4 5'
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4 5'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = '3 4 5'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
num_radial = 81
num_axial = 21
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.1 .9 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = ${contact_penalty}
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
kennard_coefficient = ${kennard_coefficient}
gap_conductance_model = TOPTAN
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = TOPTAN
meyer_hardness_model = MATPRO
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = DirichletBC
boundary = '1 2 3'
variable = temperature
value = ${cladding_temperature_BC}
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = '3 4 5'
thermal_conductivity_model = NFIR
initial_porosity = ${initial_fuel_porosity}
temperature = temperature
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4 5'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4 5'
temperature = temperature
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = '3 4 5'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4 5'
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factor
relocation_activation1 = ${relocation_activation1}
burnup_relocation_stop = ${burnup_relocation_stop}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_inelastic_stressUpdate] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
temperature = temperature
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3 4 5'
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4 5'
burnup = burnup
temperature = temperature
initial_fuel_density = ${initial_fuel_density}
total_densification = ${total_densification}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4 5'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temperature
max_increment = ${damper_max_temperature_increment}
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# Time steps set up to match halden data
# start_time = -100
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
dtmin = ${dtmin}
[TimeStepper]
type = ConstantDT
dt = ${Timestepper_dt}
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3 4 5'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3 4 5'
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '3 4 5'
variable = grain_radius
[]
[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
block = '3 4 5'
burnup_function = burnup
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3 4 5'
outputs = exodus
[]
[power_lower_TC]
type = FunctionValuePostprocessor
function = q
point = ${power_lower_TC_point}
[]
[power_upper_TC]
type = FunctionValuePostprocessor
function = q
point = ${power_upper_TC_point}
[]
[upper_TC_temperature] # output temperature at upper TC (mesh dependent!!)
type = NodalVariableValue
variable = temperature
nodeid = ${upper_TC_temperature_nodeid}
[]
[lower_TC_temperature] # output temperature at upper TC (mesh dependent!!)
type = NodalVariableValue
variable = temperature
nodeid = ${lower_TC_temperature_nodeid}
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temperature
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
cladding_blocks = 1
rod_component = BOTH
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'fission_gas_released rod_total_power upper_TC_temperature lower_TC_temperature'
output_limiting_function = power_history
sync_only = true
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
[Debug]
show_var_residual = 'temperature disp_x disp_y'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03_ccm.i)
# This file was created using BIF with the following inputs:
# FK03/FK03.var - md5sum: 63fb064f9380e246b80d3fb7762c0b71
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[coolant_channel_htc]
type = MaterialRealAux
variable = coolant_channel_htc
property = coolant_channel_htc
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
variable = coolant_channel_hmode
property = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
variable = coolant_channel_htype
property = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
variable = critical_heat_flux
property = critical_heat_flux
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[CoolantChannel]
[clad_outer_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 295
inlet_pressure = 0.1E6 # Pa
inlet_massflux = 100.0 # kg/m^2-sec
rod_diameter = 1.10e-2 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
chf_scalef = 5.0
htc_correlation_type = 9
chf_correlation_type = 5
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 550000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/diffusion/case_10/case_10.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
initial_enrichment = 0.1676
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 250.5e-6 342.5e-6 380.5e-6 413.5e-6 454.5e-6'
mesh_density = '50 30 15 15 15'
block_names = 'fuel buffer IPyC SiC OPyC'
bias = '1 1.25 1.25 1.25 1.25'
dual_bias = '0.8 0.8 0.8 0.8 1'
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[conc_Cs]
[]
[conc_Ag]
[]
[conc_Sr]
[]
[temperature]
initial_condition = 1373.15
scaling = 1e-10
[]
[]
[AuxVariables]
[Cs_diff_coef]
order = CONSTANT
family = MONOMIAL
[]
[Ag_diff_coef]
order = CONSTANT
family = MONOMIAL
[]
[Sr_diff_coef]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature]
type = PiecewiseLinear
data_file = temperature_history.dat
format = columns
[]
[]
[Kernels]
[mass_Cs_dt]
type = TimeDerivative
variable = conc_Cs
[]
[mass_Cs]
type = ArrheniusDiffusion
variable = conc_Cs
arrhenius_prpty_name = arrhenius_diffusion_coef_Cs
temperature = temperature
extra_vector_tags = 'ref'
[]
[mass_source_Cs]
type = SpeciesSourceRate
variable = conc_Cs
property_name = Cs_generation
block = fuel
[]
[mass_Ag_dt]
type = TimeDerivative
variable = conc_Ag
[]
[mass_Ag]
type = ArrheniusDiffusion
variable = conc_Ag
arrhenius_prpty_name = arrhenius_diffusion_coef_Ag
temperature = temperature
extra_vector_tags = 'ref'
[]
[mass_source_Ag]
type = SpeciesSourceRate
variable = conc_Ag
property_name = Ag_generation
block = fuel
[]
[mass_Sr_dt]
type = TimeDerivative
variable = conc_Sr
[]
[mass_Sr]
type = ArrheniusDiffusion
variable = conc_Sr
arrhenius_prpty_name = arrhenius_diffusion_coef_Sr
temperature = temperature
extra_vector_tags = 'ref'
[]
[mass_source_Sr]
type = SpeciesSourceRate
variable = conc_Sr
property_name = Sr_generation
block = fuel
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = FissionRateHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[Cs_diff_coef]
type = MaterialRealAux
variable = Cs_diff_coef
property = arrhenius_diffusion_coef_Cs
execute_on = timestep_end
[]
[Ag_diff_coef]
type = MaterialRealAux
variable = Ag_diff_coef
property = arrhenius_diffusion_coef_Ag
execute_on = timestep_end
[]
[Sr_diff_coef]
type = MaterialRealAux
variable = Sr_diff_coef
property = arrhenius_diffusion_coef_Sr
execute_on = timestep_end
[]
[burnup]
type = MaterialRealAux
block = fuel
variable = burnup
property = burnup
[]
[]
[BCs]
[freesurf_conc_Cs]
type = DirichletBC
variable = conc_Cs
boundary = exterior
value = 0.0
[]
[freesurf_conc_Ag]
type = DirichletBC
variable = conc_Ag
boundary = exterior
value = 0.0
[]
[freesurf_conc_Sr]
type = DirichletBC
variable = conc_Sr
boundary = exterior
value = 0.0
[]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature
boundary = exterior
[]
[]
[Materials]
[burnup]
type = GenericFunctionMaterial
block = fuel
prop_names = 'burnup'
prop_values = 'if(t<21513600,0.093/21513600*t,0.093)'
[]
[fission_rate]
type = GenericFunctionMaterial
block = fuel
prop_names = 'fission_rate'
# 1.05e21 = 0.093/21513600*10850/.27*6.0221409e23
prop_values = 'if(t<=21513600,1.05e21,0)'
[]
[fuel_conc_Cs]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209e3 # J/mol
d2 = 5.2e-4
q2 = 362e3
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Cs
[]
[mass_source_Cs_property]
type = SpeciesSourceMaterial
block = fuel
property_name = Cs_generation
kind = Cs
[]
[buffer_conc_Cs]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1e-8 # m^2/s
q1 = 0 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Cs
[]
[IPyC_conc_Cs]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8 # m^2/s
q1 = 222e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Cs
[]
[SiC_conc_Cs]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = 'if(t<21513600,exp(3.0e25/21513600*t/5e25),exp(3.0e25/5e25))'
q1 = 125e3 # J/mol
d2 = 1.6e-2
q2 = 514e3
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Cs
[]
[OPyC_conc_Cs]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Cs
[]
[fuel_conc_Ag]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 6.7e-9 # m^2/s
q1 = 165e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Ag
[]
[mass_source_Ag_property]
type = SpeciesSourceMaterial
block = fuel
property_name = Ag_generation
kind = Ag
[]
[buffer_conc_Ag]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1e-8 # m^2/s
q1 = 0 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Ag
[]
[IPyC_conc_Ag]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 5.3e-9 # m^2/s
q1 = 154e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Ag
[]
[SiC_conc_Ag]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 3.6e-9 # m^2/s
q1 = 215e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Ag
[]
[OPyC_conc_Ag]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 5.3e-9 # m^2/s
q1 = 154e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Ag
[]
[fuel_conc_Sr]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 2.2e-3 # m^2/s
q1 = 488e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Sr
[]
[mass_source_Sr_property]
type = SpeciesSourceMaterial
block = fuel
property_name = Sr_generation
kind = Sr
[]
[buffer_conc_Sr]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1e-8 # m^2/s
q1 = 0 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Sr
[]
[IPyC_conc_Sr]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 2.3e-6 # m^2/s
q1 = 197e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Sr
[]
[SiC_conc_Sr]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 1.2e-9 # m^2/s
q1 = 205e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Sr
[]
[OPyC_conc_Sr]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 2.3e-6 # m^2/s
q1 = 197e3 # J/mol
temperature = temperature
arrhenius_prpty_name = arrhenius_diffusion_coef_Sr
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_den]
type = ParsedMaterial
block = fuel
property_name = density
expression = 10850.0
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = ParsedMaterial
block = buffer
property_name = density
expression = 1000
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = ParsedMaterial
block = IPyC
property_name = density
expression = 1900
[]
[OPyC_den]
type = ParsedMaterial
block = OPyC
property_name = density
expression = 1880
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = ParsedMaterial
block = SiC
property_name = density
expression = 3200.0
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'conc_Cs conc_Ag'
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_rel_tol = 1e-6
nl_abs_tol = 5e-19 #5e-21 #1e-22
nl_max_its = 50
l_tol = 1e-4
l_max_its = 50
start_time = 0.0
end_time = 24523200
num_steps = 2500
dt = 86400
dtmax = 86400
#dtmin = 86400
[TimeStepper]
type = FunctionDT
function = 'if(t<21513600,86400,3600)'
[]
[]
[Postprocessors]
[_temp]
type = NodalExtremeValue
variable = temperature
[]
[release_Cs_inc]
type = SideIntegralMassFlux
variable = conc_Cs
boundary = exterior
arrhenius_prpty_name = arrhenius_diffusion_coef_Cs
execute_on = 'initial timestep_end'
[]
[released_Cs]
type = TimeIntegratedPostprocessor
value = release_Cs_inc
execute_on = 'initial timestep_end'
[]
[total_Cs]
type = ElementIntegralMaterialProperty
mat_prop = Cs_generation_total
block = fuel
execute_on = 'initial timestep_end'
[]
[x_Cs_released_overall]
type = FractionalRelease
released = released_Cs
total = total_Cs
execute_on = 'initial timestep_end'
[]
[x_Cs_released]
type = FractionalRelease
released = released_Cs
total = total_Cs
execute_on = 'initial timestep_end'
start_time = 21513600
[]
[retained_Cs]
type = ElementIntegralVariablePostprocessor
variable = conc_Cs
execute_on = 'initial timestep_end'
[]
[release_Ag_inc]
type = SideIntegralMassFlux
variable = conc_Ag
boundary = exterior
arrhenius_prpty_name = arrhenius_diffusion_coef_Ag
execute_on = 'initial timestep_end'
[]
[released_Ag]
type = TimeIntegratedPostprocessor
value = release_Ag_inc
execute_on = 'initial timestep_end'
[]
[total_Ag]
type = ElementIntegralMaterialProperty
mat_prop = Ag_generation_total
block = fuel
execute_on = 'initial timestep_end'
[]
[x_Ag_released_overall]
type = FractionalRelease
released = released_Ag
total = total_Ag
execute_on = 'initial timestep_end'
[]
[x_Ag_released]
type = FractionalRelease
released = released_Ag
total = total_Ag
execute_on = 'initial timestep_end'
start_time = 21513600
[]
[retained_Ag]
type = ElementIntegralVariablePostprocessor
variable = conc_Ag
execute_on = 'initial timestep_end'
[]
[release_Sr_inc]
type = SideIntegralMassFlux
variable = conc_Sr
boundary = exterior
arrhenius_prpty_name = arrhenius_diffusion_coef_Sr
execute_on = 'initial timestep_end'
[]
[released_Sr]
type = TimeIntegratedPostprocessor
value = release_Sr_inc
execute_on = 'initial timestep_end'
[]
[total_Sr]
type = ElementIntegralMaterialProperty
mat_prop = Sr_generation_total
block = fuel
execute_on = 'initial timestep_end'
[]
[x_Sr_released_overall]
type = FractionalRelease
released = released_Sr
total = total_Sr
execute_on = 'initial timestep_end'
[]
[x_Sr_released]
type = FractionalRelease
released = released_Sr
total = total_Sr
execute_on = 'initial timestep_end'
start_time = 21513600
[]
[retained_Sr]
type = ElementIntegralVariablePostprocessor
variable = conc_Sr
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
perf_graph = true
print_linear_residuals = false
exodus = true
[console]
type = Console
time_step_interval = 1
[]
[out]
type = CSV
[]
[out_final]
type = CSV
execute_on = final
[]
[]
(assessment/LWR/validation/IFA_534/analysis/IFA_534_Base.i)
# This is a partial input file base with information/features common to all the fuel rods within this assessment.
# NOTE: This file will not run on its own, it is used to create a complete input file in the rod-specific input files.
# Fuel material properties
initial_fuel_density = 10431 # kg/m^3 #95% of TD (TD assumed to be 10980)
fuel_thermal_expansion_coeff = 10e-6 # K^-1
# Cladding material properties
cladding_thermal_conductivity = 16.0 # W/m-K
cladding_specific_heat = 330.0 # J/kg-K
cladding_density = 6551.0 # kg/m^3
# Fuel geometry
a_lower = 0.00324 # m
a_upper = 0.407 # m
fuel_outer_radius = 0.00456 # m
fuel_inner_radius = 0 # m
fuel_volume_ratio = 1.0 # (-)
fuel_diameter = 0.00912 # m
diametral_gap = 170e-6 # m
rod_power_scale_factor = 0.407 # m (rod height)
# Temperature conditions
initial_temperature = 293 # K
stress_free_temperature = 293 # K
# Neutronics, power, and isotope fractions
energy_per_fission = 3.2e-11 # J/fission
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Coolant pressure ramp parameters
pressure_ramp_x = '-100 0 127353600 127357200 127425420 127432620 136365300 136368900'
pressure_ramp_y = '0.006539 1 1 0.006539 0.006539 0.20645 0.20645 0.006539'
pressure_ramp_factor = 15.5e6 # (-)
# Contact
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
# Relocation
relocation_activation1 = 5000 # W/m
burnup_relocation_stop = 0.029 # FIMA
# Plenum parameters
initial_plenum_pressure = 2.15e6 # Pa
startup_time = 0 # s
refab_time = 127360800 # s
refab_pressure = 2.15e6 # Pa
refab_temperature = 293 # K
refab_volume = 5.1e-6 # m^3
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-K
# Numerical options
l_tol = 8e-3
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100 # s
dtmax = 1e6 # s
dtmin = 1 # s
TimeStepper_dt = 100 # s
TimeStepper_iteration_window = 2
TimeStepper_linear_iteration_ratio = 100
TimeStepper_max_function_change = 2e6
# Postprocessor paramters
FCT_nodeid = 1700
# Irradiation history
end_time = 136369000 # s
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
temperature = temperature
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = ${mesh_patch_size} # 20 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = ${initial_temperature} # set initial temperature to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = ${initial_grain_radius} # must be the same as the initial value in Sifgr
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ${power_history_data_file}
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, Base irradiation in a PWR @ 15.5 MPa, Ambient for refab @ 0.101353 MPa, Ramp testing done in the Halden Rx @ 3.2 MPa, Ambient for PIE @ 0.101353 MPa
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[flux]
type = PiecewiseLinear
data_file = ${fast_flux_data_file}
format = columns
[]
[clad_bc]
type = PiecewiseLinear
data_file = ${clad_temperature_data_file}
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_xy creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_outer_radius = ${fuel_outer_radius}
fuel_inner_radius = ${fuel_inner_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temperature
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = '1'
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = ${contact_penalty}
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temperature
tangential_tolerance = ${tangential_tolerance}
roughness_coef = ${roughness_coef}
roughness_secondary = ${roughness_secondary}
roughness_primary = ${roughness_primary}
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
refab_time = ${refab_time}
refab_gas_types = He
refab_fractions = 1
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temperature
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = ${refab_time}
refab_pressure = ${refab_pressure}
refab_temperature = ${refab_temperature}
refab_volume = ${refab_volume}
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elasticity_and_creep]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${fuel_thermal_expansion_coeff}
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = ${fuel_diameter}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = ${diametral_gap}
relocation_activation1 = ${relocation_activation1}
burnup_relocation_stop = ${burnup_relocation_stop}
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = ${cladding_thermal_conductivity}
specific_heat = ${cladding_specific_heat}
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_inelastic_stressUpdate'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = ${cladding_density}
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
# l_max_its = 100
l_max_its = ${l_max_its}
l_tol = ${l_tol}
# controls for nonlinear iterations
# nl_max_its = 25
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
# time control
start_time = ${start_time}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
iteration_window = ${TimeStepper_iteration_window}
optimal_iterations = ${TimeStepper_optimal_iterations}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '3'
variable = grain_radius
[]
[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
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${rod_power_scale_factor}
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[FCT]
type = NodalVariableValue
variable = temperature
nodeid = ${FCT_nodeid}
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temperature
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(test/tests/radial_power_factor/radial_power_factor_inputrpf.i)
[GlobalParams]
density = 10412.
displacements = 'disp_x disp_y'
temperature = temp
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false #Small strain doesn't require
[mesh]
type = FileMeshGenerator
file = 1x10.e
[]
[]
[Functions]
[power]
type = ParsedFunction
expression = '20000'
[]
[axial_power_factor]
type = ParsedFunction
expression = '1'
[]
[radial_power_factor]
type = PiecewiseBilinear
data_file = radial_power_factors.csv
axis = 0 # (0,1,2) => (x,y,z)
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1373.15
[]
[]
[AuxVariables]
[]
[Physics/SolidMechanics/QuasiStatic]
[solid]
block = 1
strain = small
incremental = true
add_variables = true
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[]
[Burnup]
[burnup]
block = 1
order = FIRST
family = LAGRANGE
rod_ave_lin_pow = power
axial_power_profile = axial_power_factor
rpf_input = radial_power_factor
num_radial = 50
bias = 0.95
num_axial = 2
a_lower = 0
a_upper = .00041
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.
[]
[temp]
type = DirichletBC
variable = temp
boundary = 1
value = 1373.15
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.e-5
stress_free_temperature = 1373.15
eigenstrain_name = thermal_strain
[]
[thermal]
type = UO2Thermal
block = 1
temperature = temp
burnup_function = burnup
initial_porosity = 0
thermal_conductivity_model = FINK_LUCUTA
[]
[]
[Postprocessors]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
l_tol = 1e-5
start_time = 0.0
dt = 100000
num_steps = 700
[]
[Outputs]
time_step_interval = 20
exodus = true
show = 'fission_rate burnup RPF'
[]
(assessment/LWR/validation/Tribulation/analysis/BN1X3/BN1X3.i)
initial_fuel_density = 10408
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
initial_porosity = 0.05345
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 1.0019
pellet_outer_radius = 0.00402
pellet_mesh_density = customize
nx_p = 11
ny_p = 243
clad_bot_gap_height = 0.001
clad_gap_width = 100.0e-6
clad_thickness = 0.00063
clad_mesh_density = customize
nx_c = 4
ny_c = 249
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.0883
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = 3
initial_condition = 8.58e-6 # 2D grain radius 11e-6/2*1.56
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseBilinear
data_file = BN1X3_power.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 34462368 34548768 34635168 35176032 35262432 35348832 90228384 90314784'
y = '0.0073804 1 1 0.0073804 1.01974 1.01974 0.0073804 1 1 0.0073804'
[]
[flux]
type = PiecewiseBilinear
data_file = BN1X3_fast_flux.csv
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = BN1X3_clad_temp.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[timestep_function]
type = PiecewiseLinear
data_file = BN1X3_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0825 0.9175 0 0 0 0'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 0.3e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 13.729e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.96133e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0205
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10393
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 90314784
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 20
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = timestep_function
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[fuel_max_temp]
type = ElementExtremeValue
block = 3
variable = temp
[]
[fuel_average_temp]
type = ElementAverageValue
block = 3
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage fuel_average_temp'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(test/tests/axial_relocation/ad_uo2_pulverization_phasefield2.i)
# This file is to test the phase-field based pulverization criterion for UO2 fuel
# with evolve_bubble_pressure_hbs = true and using the 3D phase field criterion
# for pulverization.
# In the test 5 axial fuel slices are modeled without cladding with an outer fuel
# radius of 4.5 mm and slice height of 0.1 m. Ten radial finite elements are used.
# The burnup increases linearly from the fuel centerline to the fuel surface.
# Temperature is held at constant T = 673.15 K from t = 0 to t = 100, followed
# by a ramp in temperature from t = 100 to t = 125. Pulverization will occur
# during the ramp only, in the rim region where a significant amount of high burnup
# structure formation has begun. Local pulverization is tracked with the material
# property pulverized, which is 0 where pulverization has not occured and 1 where
# it has occurred. This material property is output to the exodus file for this test.
# At each time step, the porosity in the HBS region is calculated at each radial
# position using the correlation due to Kampf in the UO2Thermal material.
# The porosity, along with the hydrostatic stress, are used to calculate the
# critical pressure for grain boundary fracture using data from fits to phase-field
# fracture simulations. The current pressure of the most likely bubble
# size is compared to the critical pressure to determine whether pulverization has
# occurred at each quadrature point.
# Based upon the conditions and threshold given above at t = 110 s the outer three
# elements should be completely pulverized. The inner radius of the third element
# is at a radius of 3.150 mm. Therefore the layered averaged pulverized fuel volume
# (in each layer in this case) is analytically determined by:
#
# V_p = pi * L * (R_o^2 - R_p^2)
#
# where L is the slice height (0.1 m), R_o is the outer fuel radius, and R_p is the
# radius into the fuel at which pulverization ends. Therefore:
#
# V_p = pi * (0.1) * (4.5e-3^2 - 3.150e-3^2)
# V_p = 3.24448e-6 m^3 in each layer.
#
# The layered_pulverized_fuel_volume AuxVariable computed by BISON gives
# a layered volume of pulverized fuel as 3.24448e-6 m^3.
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
include_clad = false
fuel_height = 0.5
include_plenum = false
nx_p = 10
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 673.15, 673.15+(t-100)*15.5)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = ADMaterialRealAux
block = fuel
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = '10 12'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
hbs_model = true
hbs_material = hbs_formation
[]
[uo2pulverizationmesoscale]
type = ADUO2PulverizationMesoscale
block = fuel
temperature = temperature
output_properties = pulverized
pulverization_criterion_type = phase_field_3D
outputs = exodus
[]
[dummy_stress]
type = ADGenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-1e7 -1e7 -1e7 0 0 0'
[]
[fuel_thermal]
type = ADUO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = ADHighBurnupStructureFormation
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized_aux
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 125
dt = 1
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_Base.i)
# Base input file
# Problem parameters
acceptable_iterations = 30
acceptable_multiplier = 10
# Neutronics, power, and isotope fractions
energy_per_fission = 3.2e-11 # J/fission
fast_neutron_flux_factor = 3e13 # n/m^2-s
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Function data
Fuel_CTE_function_xy_data = ' 0 1.000E-05
300 1.000E-05
350 1.000E-05
400 1.000E-05
450 1.000E-05
500 1.001E-05
550 1.002E-05
600 1.003E-05
650 1.005E-05
700 1.008E-05
750 1.011E-05
800 1.015E-05
850 1.020E-05
900 1.026E-05
950 1.032E-05
1000 1.039E-05
1050 1.046E-05
1100 1.053E-05
1150 1.061E-05
1200 1.069E-05
1250 1.077E-05
1300 1.085E-05
1350 1.094E-05
1400 1.102E-05
1450 1.111E-05
1500 1.119E-05
1550 1.127E-05
1600 1.135E-05
1650 1.143E-05
1700 1.151E-05
1750 1.158E-05
1800 1.166E-05
1850 1.173E-05
1900 1.180E-05
1950 1.187E-05
2000 1.193E-05
2050 1.199E-05
2100 1.205E-05
2150 1.211E-05
2200 1.217E-05
2250 1.222E-05
2300 1.227E-05
2350 1.232E-05
2400 1.237E-05
2450 1.242E-05
2500 1.246E-05
2550 1.250E-05
2600 1.254E-05
2650 1.258E-05
2700 1.262E-05
2750 1.265E-05
2800 1.268E-05
2850 1.271E-05
2900 1.274E-05
2950 1.277E-05
3000 1.280E-05
3050 1.282E-05
3100 1.285E-05'
# Cladding material properties
cladding_density = 6550 # kg/m^3
# Rod geometry
num_radial = 80
a_lower = 0.0045 # m
fuel_inner_radius = 0 # m
fuel_volume_ratio = 1 # (-)
# Contact
roughness_coef = 3.2
# Relocation
relocation_activation1 = 5000 # W/m
# Plenum parameters
startup_time = 0 # s
refab_temperature = 293.15 # K
# Temperature conditions
stress_free_temperature = 293.15 # K
initial_temperature = 293.15 # K
# Physical constants
ideal_gas_constant = 8.3143 # J/mol-K
# Numerical options
slip_min_damping_factor = 0.05 # (-)
l_max_its = 100
l_tol = 1e-3
nl_max_its = 40
nl_rel_tol = 1e-4
dtmin = 1e-7 # s
TimeStepper_iteration_window = 4
TimeStepper_linear_iteration_ratio = 100
[GlobalParams]
displacements = ${displacements_option}
temperature = temperature
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = ${acceptable_iterations}
acceptable_multiplier = ${acceptable_multiplier}
[]
[Mesh]
coord_type = RZ
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = ${clad_block_name}
[]
[fast_neutron_fluence]
block = ${clad_block_name}
[]
[grain_radius]
block = ${fuel_block_name}
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[fuel_cond]
order = CONSTANT
family = MONOMIAL
[]
[swelling_strain]
order = CONSTANT
family = MONOMIAL
block = ${fuel_block_name}
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temperature]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_flux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ${power_history_data_file}
format = columns
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ${axial_peaking_data_file}
axis = 1
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
xy_data = ${pressure_ramp_xy_data}
[]
[temperature_ramp] # inlet coolant temperature evolution
type = PiecewiseLinear
xy_data = ${temperature_ramp_xy_data}
[]
[Fuel_CTE_function] #Fuel CTE as a function of temperature from MATPRO data
type = PiecewiseLinear
xy_data = ${Fuel_CTE_function_xy_data}
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = ${burnup_symbol_values}
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source_fuel] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
block = ${fuel_block_name}
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = ${fuel_block_name}
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = ${num_radial}
num_axial = ${BU_num_axial}
a_upper = ${a_upper}
a_lower = ${a_lower}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = ${clad_block_name}
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_profile
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
block = ${clad_block_name}
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = ${fuel_block_name}
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[fuel_conductance]
type = MaterialRealAux
property = thermal_conductivity
variable = fuel_cond
block = ${fuel_block_name}
[]
[swelling_strain]
type = MaterialRealAux
property = volumetric_swelling_strain
variable = swelling_strain
block = ${fuel_block_name}
[]
[clad_coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_coolant_htc
boundary = 2
[]
[coolant_temperature]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temperature
boundary = 2
[]
[clad_coolant_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_coolant_flux
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
property = critical_heat_flux
variable = critical_heat_flux
boundary = 2
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
execute_on = timestep_end
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
execute_on = timestep_end
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = ${clad_block_name}
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = ${contact_penalty}
formulation = penalty
normalize_penalty = ${normalize_contact_penalty_option}
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
quadrature = true
emissivity_primary = ${emissivity_primary} # Emissivity for fuel
emissivity_secondary = ${emissivity_secondary} # Emissivity for clad
refab_time = ${refab_time}
refab_gas_types = He
refab_fractions = 1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = ${coolantPressure_boundary}
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_temperature = ${initial_temperature}
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ${PP_temperature} #plenumtemperature
volume = ${PP_volume} # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
refab_time = ${refab_time}
refab_pressure = ${refab_pressure}
refab_temperature = ${refab_temperature}
refab_volume = ${refab_volume}
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = ${convective_clad_surface_boundary}
variable = temperature
inlet_temperature = temperature_ramp # K
inlet_pressure = pressure_ramp # Pa
coolant_material = ${coolant_material}
compute_enthalpy = true
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = ${fuel_block_name}
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
total_densification = ${total_densification}
initial_porosity = ${initial_fuel_porosity}
eigenstrain_name = ${fuel_volumetric_swelling_eigenstrain_name}
[]
[fuel_density]
type = StrainAdjustedDensity
block = ${fuel_block_name}
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = ${fuel_block_name}
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
initial_porosity = ${initial_fuel_porosity}
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = ${fuel_block_name}
[]
[fuel_elasticity_tensor]
type = ${fuel_elasticity_tensor_type}
block = ${fuel_block_name}
[]
[fuel_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = ${fuel_block_name}
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_function = Fuel_CTE_function
eigenstrain_name = ${fuel_thermal_expansion_eigenstrain_name}
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = ${fuel_block_name}
burnup_function = burnup
diameter = ${fuel_diameter}
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap = ${diametral_gap}
burnup_relocation_stop = ${burnup_relocation_stop}
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = ${fuel_relocation_eigenstrain_name}
[]
[fission_gas_release]
type = UO2Sifgrs
block = ${fuel_block_name}
temperature = temperature
burnup_function = burnup
initial_porosity = ${initial_fuel_porosity}
gbs_model = ${gbs_model_option}
[]
[clad_density]
type = StrainAdjustedDensity
block = ${clad_block_name}
strain_free_density = ${cladding_density}
[]
[clad_thermal]
type = ZryThermal
block = ${clad_block_name}
temperature = temperature
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = ${clad_block_name}
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
max_inelastic_increment = ${max_inelastic_increment}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = ${clad_block_name}
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = ${clad_block_name}
tangent_operator = elastic
inelastic_models = ${clad_inelastic_models_type}
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = ${clad_block_name}
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = ${clad_irradiation_swelling_eigenstrain_name}
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = ${clad_block_name}
cold_work_factor = 0.5
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
plasticity_model_type = MATPRO
max_inelastic_increment = ${max_inelastic_increment}
[]
[clad_thermal_expansion] # thermoelasticity, plasticity, and thermal and irradiation creep for Zr4
type = ZryThermalExpansionMATPROEigenstrain
block = ${clad_block_name}
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = ${clad_thermal_expansion_eigenstrain_name}
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = ${clad_inner_radius}
clad_outer_radius = ${clad_outer_radius}
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[phase]
type = ZrPhase
block = ${clad_block_name}
numerical_method = 2
[]
[]
[Dampers]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = ${slip_min_damping_factor}
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its =${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
optimal_iterations = ${TimeStepper_optimal_iterations}
iteration_window = ${TimeStepper_iteration_window}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
timestep_limiting_function = power_profile
max_function_change = ${TimeStepper_max_function_change}
force_step_every_function_point = true
timestep_limiting_postprocessor = material_timestep_control
time_t = ${time_t}
time_dt = ${time_dt}
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ${fis_gas_grain_type}
block = ${fuel_block_name}
outputs = exodus
[]
[fis_gas_boundary]
type = ${fis_gas_boundary_type}
block = ${fuel_block_name}
outputs = exodus
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[burnup_GWd]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
#######################################
[penetration]
type = NodalVariableValue
variable = penetration
nodeid = ${penetration_nodeid}
use_displaced_mesh = 1
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = ${contact_pressure_nodeid}
use_displaced_mesh = 1
[]
[fuel_centerline_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${fuel_centerline_temperature_nodeid}
[]
[fuel_surface_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${fuel_surface_temperature_nodeid}
[]
[clad_inner_surface_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${clad_inner_surface_temperature_nodeid}
[]
[clad_outer_surface_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${clad_outer_surface_temperature_nodeid}
[]
#######################################
[max_fuel_temperature]
type = NodalExtremeValue
block = ${fuel_block_name}
variable = temperature
[]
[max_clad_temperature]
type = NodalExtremeValue
block = ${clad_block_name}
variable = temperature
[]
[material_timestep_control]
type = MaterialTimeStepPostprocessor
block = ${clad_block_name}
[]
[]
[VectorPostprocessors]
[ox_thick]
type = SideValueSampler
variable = oxide_thickness
boundary = 2
sort_by = y
outputs = 'outfile_oxide_thickness'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = ${color_option}
[console]
type = Console
output_linear = true
max_rows = 10
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = ${chkfile_show}
execute_on = 'FINAL'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
time_step_interval = 4
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[]
(examples/TRISO/accident_simulation/triso2D_accident_mortar.i)
# This example is 2D-RZ analysis of a TRISO fuel particle. Fully coupled
# heat transfer and solid mechanics, plus diffusion of the fission product
# species cesium (Cs) are simulated. The mesh includes contact surfaces
# between the buffer and IPyC layers to facilitate a gap opening between
# these layers. These surfaces are initially in mechanical contact but
# are assumed to have no strength in tension. A coarse mesh is used to
# provide a short run time.
# The calculation simulates fuel-life in three steps. The first step is an
# irradiation period, where constant power and a fixed particle surface
# temperature (1500 K) are assumed over a lifetime of 76 Ms (2.4 yrs).
# For the second step, fuel removal and storage are simulated by setting
# the reactor power and Cs source terms to zero, reducing the particle
# surface temperature to ambient (300 K), and then holding it
# for 100 days. A third and final step simulates accident
# behavior by increasing the particle surface temperature from ambient
# to 2073 K over 2 hrs, and then holding it at this elevated temperature
# for an additional 200 hrs. At the particle outer boundary, the Cs
# concentration is held at zero and the pressure at ambient during the
# entire simulation. The particle is assumed to be stress-free at an
# initial temperature of 1500 K.
#
# Details about this simulation are given in Section 4 of the following
# article: J. D. Hales, R. L. Williamson, S. R. Novascone, D. M. Perez,
# B. W. Spencer and G. Pastore, "Multidimensional multiphysics simulation
# of TRISO particle fuel", Journal of Nuclear Materials, Vol. 443, p. 531,
# 2013.
# This is a version using a thermomechanical mortar approach.
initial_fuel_density = 11000.0
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
flux_conversion_factor = 0.85
[]
[Mesh]
coord_type = RZ
[file]
type = FileMeshGenerator
file = triso2Dmed.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp conc'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 1500.0
[]
[conc]
initial_condition = 0.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fluence]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[creep_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[d_gap]
type = PiecewiseLinear
x = '1500 2100'
y = '1e-14 1e-12'
[]
[integral_flux_error]
type = ParsedFunction
symbol_names = 'buffer_integral_flux IPyC_integral_flux'
symbol_values = 'buffer_integral_flux IPyC_integral_flux'
expression = 'IPyC_integral_flux + buffer_integral_flux'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress'
strain = FINITE
incremental = true
add_variables = false
[default]
block = 'fuel buffer IPyC OPyC'
eigenstrain_names = 'thermal_strain swelling_strain'
extra_vector_tags = 'ref'
[]
[SiC]
block = 'SiC'
eigenstrain_names = 'thermal_strain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = TimeDerivative
variable = conc
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[mass]
type = ArrheniusDiffusion
variable = conc
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[mass_source]
type = BodyForce
variable = conc
function = power_history
value = 1.22e-5 # units of moles/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
block = 'fuel buffer IPyC SiC OPyC'
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = fuel
fission_rate_function = power_history
value = 3.89e19
execute_on = timestep_begin
[]
[fluence]
type = MaterialRealAux
property = fast_neutron_fluence
variable = fluence
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
execute_on = timestep_begin
density = ${initial_fuel_density}
[]
[creep_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_xx
index_i = 0
index_j = 0
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_yy
index_i = 1
index_j = 1
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_zz
index_i = 2
index_j = 2
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[]
[ThermalContactMortar]
[thermal]
secondary_variable = temp
primary_boundary = 15
secondary_boundary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
gap_geometry_type = CYLINDER
min_gap = 1e-7
max_gap = 50e-6
roughness_coef = 0.0
correct_edge_dropping = true
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
model = frictionless
formulation = mortar
c_normal = 1.0e8
correct_edge_dropping = true
[]
[]
[ThermalContact]
[cesium_contact]
type = GapHeatTransfer
variable = conc
primary = 15
secondary = 17
tangential_tolerance = 1e-6
gap_conductivity_function = d_gap
gap_conductivity_function_variable = temp
appended_property_name = _conc
emissivity_primary = 0
emissivity_secondary = 0
quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
extra_vector_tags = 'ref'
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
extra_vector_tags = 'ref'
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temp
boundary = exterior
function = temp_bc
extra_vector_tags = 'ref'
[]
# fix concentration on free surface
[freesurf_conc]
type = DirichletBC
variable = conc
boundary = exterior
value = 0.0
extra_vector_tags = 'ref'
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 0
startup_time = 1.0e4
R = 8.3145
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 5e17
[]
[fission_gas_release] # Sifgrs fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temp
burnup = burnup
eigenstrain_name = 'swelling_strain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel'
[]
[fuel_elasticity]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = .345
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density} # kg/m^3
[]
[fuel_conc]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_eigenstrain]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = 'swelling_strain'
[]
[buffer_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[buffer_elasticity]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e10
poissons_ratio = .23
[]
[buffer_stress]
type = PyCCreep
block = buffer
temperature = temp
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_conc]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[IPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[IPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[IPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[IPyC_disp]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temp
[]
[IPyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = StrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1900.0
[]
[IPyC_conc]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8
q1 = 222.0e+3
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_elasticity]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = .13
[]
[SiC_creep]
type = MonolithicSiCCreepUpdate
block = SiC
temperature = temp
k_function = k_function
[]
[SiC_stress]
type = ComputeMultipleInelasticStress
block = SiC
tangent_operator = elastic
inelastic_models = 'SiC_creep'
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_conc]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[OPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[OPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[OPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[OPyC_conc]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-14'
snesmf_reuse_base = false
line_search = 'none'
nl_rel_tol = 5e-4
nl_abs_tol = 1e-10
nl_max_its = 20
l_max_its = 8
start_time = 0.0
end_time = 85.3682e6
dt = 100
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
growth_factor = 1.5
linear_iteration_ratio = 100
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
[]
[Predictor]
type = SimplePredictor
scale = 0.5
skip_times_old = '0 76e6 76.001e6 84.641e6 84.6482e6'
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
sync_times = '100 6308007 75696087'
sync_only = true
[]
[]
[Postprocessors]
[Cs_release]
type = SideIntegralMassFlux
variable = conc
boundary = exterior
execute_on = timestep_end
[]
[dt]
type = TimestepSize
execute_on = timestep_end
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
# ro = 3.125e-4
# ri = 2.125e-4
# vb = 4/3*pi*(ro^3-ri^3) = 8.76e-11
# buffer density = 1000
# PyC density = 1900
# fill ratio = 10/19
# vb*10/19 = 4.6e-11
# Must remove 4.6e-11 m^3 from the volume
addition = -4.6e-11
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[buffer_avg_conc]
type = SideAverageValue
variable = conc
boundary = 17
[]
[IPyC_avg_conc]
type = SideAverageValue
variable = conc
boundary = 15
[]
[buffer_integral_flux]
type = SideIntegralMassFlux
variable = conc
boundary = 17
[]
[IPyC_integral_flux]
type = SideIntegralMassFlux
variable = conc
boundary = 15
[]
[integral_flux_error]
type = FunctionValuePostprocessor
function = integral_flux_error
[]
[integral_Cs_release]
type = TimeIntegratedPostprocessor
value = Cs_release
[]
[Cs_production]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.22e-5 # units of moles/m**3-s
[]
[time_integral_Cs_production]
type = TimeIntegratedPostprocessor
value = Cs_production
[]
[volumeFuel_initial]
type = InternalVolume
boundary = fuel
execute_on = initial
[]
[integral_Cs_production]
type = ParsedPostprocessor
pp_names = 'time_integral_Cs_production volumeFuel_initial'
expression = 'time_integral_Cs_production * volumeFuel_initial'
[]
[Cs_release_fraction]
type = ParsedPostprocessor
pp_names = 'integral_Cs_release integral_Cs_production'
expression = 'integral_Cs_release / integral_Cs_production'
[]
[]
[VectorPostprocessors]
[temperaturevpp]
type = SideValueSampler
boundary = 11
variable = temp
sort_by = x
outputs = 'csv'
use_displaced_mesh = true
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFJ027/BFJ027.i)
################################################################################
#
# Description: Calvert Cliffs BFJ027
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFJ027_power.csv
# axial peaking factor file BFJ027_axial_peaking.csv
# flux boundary condition file BFJ027_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28943
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFJ027_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFJ027_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177688931 177689291'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177688931 177689291'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFJ027_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0366 .9634 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177689291
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/2D-RZ_rodlet_10pellets/fuel_pin_geometry/fuelpingeo.i)
# Model is of a smeared pellet fuel rod (pellet_type_1), using the user object fuel pin geometry.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ../smeared.e
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors12.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
quadrature = true
contact_pressure = contact_pressure
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor] # isotropic elasticity tensor for UO2
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress] # elastic stress for UO2 (used instead of creep)
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion] # thermal expansion strain for UO2
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = 'pin_geometry'
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal] # general thermal property input for clad
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = clad
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep] # creep for zircaloy cladding
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
execute_on = timestep_end
[]
#Stress Measures
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 176 # mesh dependent (contains pt. 0.0041, 0.0546333)
variable = vonmises_stress
execute_on = timestep_end
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
execute_on = timestep_end
[]
[center_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 429 # mesh dependent (contains pt. 0.00418, 0.0556267)
variable = vonmises_stress
execute_on = timestep_end
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
execute_on = timestep_end
[]
# Radial Strain
[center_strain_rr_fuel]
type = ElementalVariableValue
elementid = 176 # mesh dependent (contains pt. 0.0041, 0.0546333)
variable = radial_strain
execute_on = timestep_end
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet_type_1
execute_on = timestep_end
[]
[center_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 429 # mesh dependent (contains pt. 0.00418, 0.0556267)
variable = radial_strain
execute_on = timestep_end
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
execute_on = timestep_end
[]
[center_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 429 # mesh dependent (contains pt. 0.00418, 0.0556267)
variable = effective_creep_strain
execute_on = timestep_end
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
# Contact quantities
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 584 # mesh dependent, at (0.0041, 0.0546333)
execute_on = timestep_end
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 584 # mesh dependent, at (0.0041, 0.0546333)
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
execute_on = timestep_end
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
execute_on = timestep_end
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/1.5D_rodlet_10pellets/1_5D_friction.i)
# Model is of a 10 pellet stack of fuel modeled in 1.5d
pressure_test = 2.0e6
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = disp_x
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.00056
fuel_height = 0.1186
plenum_height = 0.027
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[AuxVariables]
[tangential_contact_pressure_aux]
block = fuel
[]
[]
[AuxKernels]
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
# We could have two element UOs to obtain interface stress
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.00917
direction_max = 0.11591
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.00917
direction_max = 0.11591
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.01
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.00917
direction_max = 0.11591
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.00917
direction_max = 0.11591
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.01
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[]
[Variables]
[temperature]
initial_condition = 580.0 # set initial temperature to coolant inlet
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[densification]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[relocation]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[discrete_contact_pressure]
order = FIRST
family = LAGRANGE
block = fuel
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.5e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
block = fuel # fission rate applied to the fuel (block 2) only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
eigenstrain_names = 'fuelthermal_strain swelling_strain fuel_relocation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
outputs = none
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
layer_friction_user_object = 1DFriction_secondary
[]
[clad]
block = clad
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx'
extra_vector_tags = 'ref'
outputs = none
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
layer_friction_user_object = 1DFriction_primary
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
order = CONSTANT
family = MONOMIAL
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
isotopes = 'U235 U238'
isotope_fractions = '0.05 0.95'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain
block = clad
execute_on = timestep_end
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
block = fuel
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
block = fuel
[]
[densification]
type = MaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
block = fuel
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
execute_on = timestep_end
block = fuel
[]
[relocation_strain]
type = MaterialRealAux
variable = relocation
property = relocation_strain
execute_on = timestep_end
block = fuel
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = clad_inside_right
secondary = pellet_outer_radial_surface
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = clad_inside_right
secondary = pellet_outer_radial_surface
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = 2
function = pressure_ramp # use the pressure_ramp function defined above
factor = 15.5e6
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = ${pressure_test}
startup_time = 0
R = 8.314
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
variable = temperature
boundary = 2
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = fuel
gas_swelling_model_type = SIFGRS
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = swelling_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000.0
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
gbs_model = true
grain_radius = grain_radius
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'zrycreep'
[]
[zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 18
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
### Nodal contact pressure
[top_contact_pressure_fuel]
type = NodalVariableValue
variable = discrete_contact_pressure
nodeid = 361 # mesh dependent, at (0.0041, 0.09219)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = discrete_contact_pressure
nodeid = 262 # mesh dependent, at (0.0041, 0.05661)
[]
[bottom_contact_pressure_fuel]
type = NodalVariableValue
variable = discrete_contact_pressure
nodeid = 163 # mesh dependent, at (0.0041, 0.02103)
[]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
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
# scale_factor = -1
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[fis_gas_produced] # fission gas produced (moles)
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temperature
burnup_function = burnup
block = fuel
fuel_pin_geometry = pin_geometry
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[ave_fuel_temp]
type = ElementAverageValue
block = fuel
variable = temperature
[]
[central_fuel_temp]
type = NodalVariableValue
nodeid = 262 #Mesh dependent (0.0041, 0.05661)
variable = temperature
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
### Comparisons for 1.5D work, mesh specific #################### # von Mises Stress
[top_vonMises_fuel]
type = ElementalVariableValue
elementid = 171 # mesh dependent (contains pt. 0.0041, 0.09219)
variable = vonmises_stress
[]
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 123 # mesh dependent (contains pt. 0.0041, 0.05661)
variable = vonmises_stress
[]
[bottom_vonMises_fuel]
type = ElementalVariableValue
elementid = 75 # mesh dependent (contains pt. 0.0041, 0.02103)
variable = vonmises_stress
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = fuel
[]
[top_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 28 # mesh dependent (contains pt. 0.00418, 0.09219)
variable = vonmises_stress
[]
[top_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 31 # mesh dependent (contains pt. 0.00474, 0.09219)
variable = vonmises_stress
[]
[center_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 16 # mesh dependent (contains pt. 0.00418, 0.05661)
variable = vonmises_stress
[]
[center_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 19 # mesh dependent (contains pt. 0.00474, 0.05661)
variable = vonmises_stress
[]
[bottom_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 4 # mesh dependent (contains pt. 0.00418, 0.02103)
variable = vonmises_stress
[]
[bottom_vonMises_clad_outer]
type = ElementalVariableValue
elementid = 7 # mesh dependent (contains pt. 0.00474, 0.02103)
variable = vonmises_stress
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
### End of 1.5D comparisons
[fuel_elongation]
type = LayeredElongation
fuel_pin_geometry = pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
execute_on = 'initial timestep_end'
[]
[clad_elongation]
type = LayeredElongation
fuel_pin_geometry = pin_geometry
out_of_plane_strain_cladding = cladding_strain_yy
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'fuel_radial_displacement'
[]
[contact_pressure_output]
type = NodalValueSampler
variable = contact_pressure
boundary = 10
sort_by = y
outputs = 'contact_pressure_output'
[]
[tangential_pressure_output]
type = NodalValueSampler
variable = tangential_contact_pressure_aux
boundary = 10
sort_by = y
outputs = 'tangential_pressure_output'
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[contact_pressure_output]
type = CSV
execute_on = 'TIMESTEP_END'
[]
[tangential_pressure_output]
type = CSV
execute_on = 'TIMESTEP_END'
[]
[]
(test/tests/sifgrs/uo2/ad_athermal_release.i)
# This is a test for the athermal release capability included in the Sifgrs fission gas behavior model.
# The model of B.J. Lewis (JNM 148, 28, 1987) is adopted for calculating the contribution to fission gas
# release (FGR) arising from the surface-fission release mechanisms (recoil and knockout).
# Since athermal release depends on the total pellet surface area (geometrical surface + cracked surface),
# an estimation of the number and length of cracks for each pellet is introduced, based on concepts from
# M. Oguma (NED 76, 35, 1983) and D.R. Olander (Fundamental aspects of nuclear reactor fuel elements,
# Berkeley, 1976). For this purpose, the subprograms PelletIdAux and PelletBrittleZone are employed.
# The athermal release model can be activated by specifying ath_model = true. It is also necessary to
# specify the name of the linear power function (see below).
# A single pellet - constant power problem is considered for this test.
# In order to isolate the athermal release, the concurrent thermal gas release is not calculated
# (by setting the fractional bubble coverage at grain boundary saturation to infinite,
# i.e., saturation_coverage = 1.e+20).
# Also, the fission gas swelling is not calculated in this test. The results demonstrate that
# the athermal release model provides a contribution to FGR independent of thermal release and given
# by an approximately constant fraction of the generated gas, released upon creation due to the recoil
# and knockout mechanisms.
initial_fuel_density = 10417.
[GlobalParams]
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
coord_type = RZ
patch_size = 1000
[mesh]
type = FileMeshGenerator
file = single_pellet_2d.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[AuxVariables]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[crack_length]
order = CONSTANT
family = MONOMIAL
[]
[gas_ath_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = linpow_ath_test.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peaking_factors.csv
scale_factor = 1
axis = 1
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = ADNeutronHeatSource
variable = temperature
block = 2
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 2
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 12
num_axial = 9
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1.
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[pelletid]
type = PelletIdAux
block = 2
variable = pellet_id
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = initial
[]
[cracklen]
type = ADMaterialRealAux
variable = crack_length
property = crack_length
[]
[fgath]
type = ADMaterialRealAux
variable = gas_ath_3
property = gas_concentration_athermal_release_volume
[]
[]
[BCs]
[convective_clad_surface]
type = ConvectiveFluxBC
boundary = '10'
variable = temperature
rate = 7500.
initial = 300.
final = 515.5
duration = 1.0e+04
[]
[top_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '21'
[]
[bottom_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '20'
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
temperature = temperature
burnup_function = burnup
[]
[density2]
type = ADParsedMaterial
block = 2
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = 2
temperature = temperature
burnup_function = burnup
saturation_coverage = 1.e+20
ath_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 2
pellet_id = pellet_id
temperature = temperature
pellet_radius = 0.005305
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_max_its = 100
l_tol = 1.e-04
nl_max_its = 15
nl_rel_tol = 1.e-8
nl_abs_tol = 1.e-8
start_time = 0.
end_time = 1.e+08
num_steps = 5000
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.e+06
time_t = '0 10000 '
time_dt = '2.e+03 1.e+07'
[]
[]
[Postprocessors]
[gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 2
[]
[gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 2
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-2kW.i)
################################################################################
#
# Description: LOCA MT-6A Test with constant power level of 1.2 kW/m
#
#
# External files:
# axial peaking factor file MT6A_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 150'
y = '1.2e3 1.2e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 60 150'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT6A_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 150'
y = '1.72 1.72'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_zz
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0' #TODO: Looks like it's set for 2.93%!
RPF = RPF
density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e11
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.15e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 310 # K
inlet_pressure = 1.72e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = htc_function
htc_correlation_type = 1
flooding_time = 60.0
flooding_rate = 0.059182 # m/s
initial_temperature = 1175 # K
initial_power = 1.776 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 63.02
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(workshop/bison_example/Smeared_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
family = LAGRANGE
order = SECOND
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = smeared.e
type = FileMeshGenerator
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temperature]
initial_condition = 295.0
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temperature
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
temperature = temperature
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fis_gas_released
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = 1e+11
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.03
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-4
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temperature
nodeid = 616
[]
[fuel_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 587
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 1440
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 587
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/OSIRIS_J12/analysis/OSIRIS_J12.i)
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} # initial fuel density 95% of theoretical (10980 kg/m3)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = osiris_j12_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[elastic_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = j12_5_power.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = j12_5_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[CoolantPressureFunction]
type = PiecewiseLinear
x = '-100 0 50389344 50389444 50390704 50480887 50480988'
y = '0.06537 1 1 0.06537 0.948 0.948 0.06537'
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = j12_5_clad_bc.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 4.8e13 #n/m2-s per W/m
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[elastic_strain_hoop]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_hoop
block = 1
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 21
a_lower = 0.00324
a_upper = 0.4442
fuel_inner_radius = 0.00
fuel_outer_radius = 0.004096
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 .955 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e12
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = CoolantPressureFunction
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.26e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
initial_fuel_density = 10431
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 293
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.008192
diametral_gap =168.0e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.015
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200.0
min_value = 273.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 50480988
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 10
linear_iteration_ratio = 100
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[average_grain_radius]
type = ElementAverageValue
block = '3'
variable = grain_radius
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(test/tests/uo2_transient_fission_gas_release/ad_uo2_pulverization_phasefield2_transient_FGR.i)
# This file is to test the transient fission gas release model that accounts for
# the amount of fission gas released as a result of fuel pulverization. it is
# based on the input file called uo2_pulverization_mesoscale.i, which tests the
# pulverization criteria for UO2 fuel with evolve_bubble_pressure_hbs = true and
# using the 3D phase field criterion for pulverization.
# In the test 5 axial fuel slices are modeled without cladding with an outer fuel
# radius of 4.5 mm and slice height of 0.1 m. Ten radial finite elements are used.
# The burnup increases linearly from the fuel centerline to the fuel surface.
# Temperature is held at constant T = 673.15 K from t = 0 to t = 100, followed
# by a ramp in temperature from t = 100 to t = 125. Pulverization will occur
# during the ramp only, in the rim region where a significant amount of high burnup
# structure formation has begun. Local pulverization is tracked with the material
# property pulverized, which is 0 where pulverization has not occured and 1 where
# it has occurred. A material property uses the local pulverization to compute the
# amount of fission gas released as a results of fuel pulverization.
# This material property is output to the exodus file for this test.
# At each time step, the pulverized material property is computed, as well as
# the bubble radius and amount of fission gas in bubbles. These material property
# are then used to determine the amount of fission gas release due to pulverization.
# This amount predicted by the material block
# UO2PulverizationTransientFissionGasRelease is compared with analytical calculations
# made in the material block fission_gas_released_amount for verification.
# This input is the AD version.
hydrostatic_stress_constant = 1e7
[GlobalParams]
value_range_behavior = WARN
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
elem_type = EDGE2
slices_per_block = 5
pellet_outer_radius = 4.5e-3
include_clad = false
fuel_height = 0.5
include_plenum = false
nx_p = 10
pellet_mesh_density = customize
pellet_bottom_coor = 0.0
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[layered_pulverized_fuel_volume]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 900, 900+(t-100)*200)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = ADMaterialRealAux
block = fuel
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[layered_pulverized_fuel_volume]
type = SpatialUserObjectAux
variable = layered_pulverized_fuel_volume
execute_on = timestep_end
block = fuel
user_object = layered_pulverized_fuel_volume
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = '10 12'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[UO2PulverizationTransientFissionGasRelease] # moles/m^3
type = ADUO2PulverizationTransientFissionGasRelease
block = fuel
outputs = exodus
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
ig_bubble_model = MECHANISTIC_AAGESEN
hbs_model = true
hbs_material = hbs_formation
pulverization_model = true
pulverization_transient_fission_gas_release_material = UO2PulverizationTransientFissionGasRelease
ig_diff_algorithm = FORMAS
hydrostatic_stress_const = ${hydrostatic_stress_constant}
igdiffcoeff_scalef_HBS = 1e24 # Ensures that all the generated fission gases diffuse from the HBS matrix to the HBS bubbles
[]
[uo2pulverizationmesoscale]
type = ADUO2PulverizationMesoscale
block = fuel
temperature = temperature
output_properties = pulverized
pulverization_criterion_type = phase_field_3D
outputs = exodus
[]
[dummy_stress]
type = ADGenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-${hydrostatic_stress_constant} -${hydrostatic_stress_constant} -${hydrostatic_stress_constant} 0 0 0'
[]
[fuel_thermal]
type = ADUO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = ADHighBurnupStructureFormation
block = fuel
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[fission_gas_density_bubble_HBS] # moles/m^3
type = ADParsedMaterial
block = fuel
property_name = 'rho_FG_hbs'
material_property_names = 'atom_per_bubble_GB_HBS bubble_GB_volume_density_HBS'
constant_names = 'Na'
constant_expressions = '6.02214076e23'
expression = 'atom_per_bubble_GB_HBS * bubble_GB_volume_density_HBS / Na'
outputs = exodus
[]
[opened_pore_volume_fraction] # -
type = ADParsedMaterial
block = fuel
property_name = 'f_V_pul'
material_property_names = 'hbs_porosity bubble_radius_GB_HBS'
constant_names = 'fragment_size c_p c_r c_0'
constant_expressions = '5e-5 0.03 5.17 0.02'
expression = 'c_p * hbs_porosity + c_r * bubble_radius_GB_HBS/fragment_size + c_0'
outputs = exodus
[]
[fission_gas_released_amount_analytical] # moles/m^3
type = ADParsedMaterial
block = fuel
property_name = 'fis_gas_rel'
material_property_names = 'f_V_pul rho_FG_hbs pulverized'
expression = 'pulverized * f_V_pul * rho_FG_hbs'
outputs = exodus
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[layered_pulverized_fuel_volume]
type = LayeredVariableIntegral
variable = pulverized_aux
fuel_pin_geometry = fuel_pin_geometry
direction = y
execute_on = 'initial timestep_end'
block = fuel
num_layers = 5
[]
[]
[Postprocessors]
[FG_amount_bubble_HBS]
type = ADLayeredElementIntegralMaterialProperty
mat_prop = rho_FG_hbs
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[FGR_analytical]
type = ADLayeredElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[FGR]
type = ADLayeredElementIntegralMaterialProperty
mat_prop = gas_concentration_release_pulverization
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[FGR_pps_diff_bison_analytical]
type = DifferencePostprocessor
value1 = FGR_analytical
value2 = FGR
[]
[FG_pps_diff_total_released]
type = DifferencePostprocessor
value1 = FG_amount_bubble_HBS
value2 = FGR
[]
[volume_domain]
type = ADLayeredElementIntegralMaterialProperty
mat_prop = 1
block = fuel
execute_on = TIMESTEP_END
fuel_pin_geometry = fuel_pin_geometry
[]
[hbs_volume]
type = ADLayeredElementIntegralMaterialProperty
mat_prop = hbs_volume_fraction
block = fuel
execute_on = TIMESTEP_END
fuel_pin_geometry = fuel_pin_geometry
[]
[hbs_volume_fraction]
type = ParsedPostprocessor
pp_names = 'hbs_volume volume_domain'
expression = 'hbs_volume / volume_domain'
execute_on = TIMESTEP_END
[]
[pulverized_volume]
type = ADLayeredElementIntegralMaterialProperty
mat_prop = pulverized
block = fuel
execute_on = TIMESTEP_END
fuel_pin_geometry = fuel_pin_geometry
[]
[]
[Executioner]
type = Transient
solve_type = Newton
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
num_steps = 125
dt = 1
[]
[Outputs]
exodus = true
csv = true
file_base = ad_uo2_pulverization_phasefield2_transient_FGR_out
[]
(test/tests/uo2_thermal/Staicu/ad_test.i)
# This test case is prepared to test the thermal conductivity using the Staicu model.
#
# The temperature is ramped on all BCs of the unit line from 500K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = ADBurnupAux
variable = burnup
density = 10431.0 # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = ADFunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = STAICU
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ADParsedMaterial
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW.i)
################################################################################
#
# Description: LOCA MT-4 Test with constant power level of 1.1 kW/m
#
#
# External files:
# axial peaking factor file MT4_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 110'
y = '1.1e3 1.1e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 57 110'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT4_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 110'
y = '0.28 0.28'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_zz
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0'
RPF = RPF
density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.3e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 311 # K
inlet_pressure = 0.28e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = 10
htc_correlation_type = 1
flooding_time = 57.0
flooding_rate = 0.127 # m/s
initial_temperature = 1140 # K
initial_power = 1.628 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 110
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/standard_lwr_outputs_action/pellet_only.i)
initial_fuel_density = 10431.0
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
density = ${initial_fuel_density}
energy_per_fission = 3.20435313e-11
temperature = temp
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = pellet_only.e
[]
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100 1e8'
y = '0 20000 20000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = fuel_pellet
add_variables = true
strain = FINITE
eigenstrain_names = fuel_thermal_strain
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = fuel_pellet
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
RPF = RPF
[]
[]
[BCs]
[fuel_wall_temp]
type = DirichletBC
preset = false
variable = temp
boundary = '10'
value = 673
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = fuel_pellet
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel_pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel_pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = StrainAdjustedDensity
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
temperature = temp
burnup_function = burnup
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_abs_tol = 1e-10
dtmax = 200
dtmin = 200
end_time = 200
[]
[StandardLWRFuelRodOutputs]
temperature = temp
rod_component = fuel
fuel_pellet_blocks = fuel_pellet
[]
[Outputs]
perf_graph = true
exodus = false
color = false
csv = true
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_fortyslice.i)
# Model is of a 40 slice pellet stack in 1.5D
# Top plenum height of 295.07 mm + bot_gap_height = 1.e-3 in 2D mesh
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = disp_x
temperature = temp
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
pellet_inner_radius = 0.0
pellet_outer_radius = 0.0041275
clad_gap_width = 8.89e-5
clad_thickness = 6.35e-4
fuel_height = 3.81381
plenum_height = 0.29607
slices_per_block = 40
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 300.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = fuel
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[stress_xx]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[vonmises_stress]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[strain_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_xy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads an input file containing rod average linear power vs time
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads an input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 15.517e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = fuel # fission rate applied to the fuel only
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = fuel
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain fuel_volumetric_strain'
mesh_generator = layered1D_mesh
[]
[clad]
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
block = clad
out_of_plane_pressure_function = clad_axial_pressure
strain = finite
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
fuel_pin_geometry = pin_geometry
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1.0
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = fuel
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[stress_xx] # computes stress components for output
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = VonMisesStress
execute_on = timestep_end
block = fuel
[]
[strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = timestep_end
[]
[creep_strain_xy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xy
index_i = 0
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = timestep_end
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
formulation = kinematic
penalty = 1e7
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.517e6
function = pressure_ramp # use the pressure_ramp function defined above
displacements = 'disp_x'
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = pin_geometry
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4 #8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol]
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[pellet_volume]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
fuel_pin_geometry = pin_geometry
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = fuel
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = pin_geometry
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
[]
[flux_from_clad]
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_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
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 231 # Global node id 232, at coordinates (0.0, 1.71774, 0.0)
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[max_penetration]
type = NodalExtremeValue
block = fuel
value_type = max
variable = penetration
[]
[min_penetration]
type = NodalExtremeValue
block = fuel
value_type = min
variable = penetration
[]
[max_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = max
variable = contact_pressure
[]
[min_contact_pressure]
type = NodalExtremeValue
block = fuel
value_type = min
variable = contact_pressure
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = fuel
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[top_disp_r_fuel]
type = NodalVariableValue
variable = disp_x
nodeid = 1654 #coords (0.0041275, 3.62274)
[]
[top_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 306 #coords (0.0042164, 3.62274)
[]
[plenum_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 351 #coords (0.0042164, 3.96053)
[]
[top_radial_strain_fuel]
type = ElementalVariableValue
variable = strain_xx
elementid = 787
[]
[top_axial_strain_fuel]
type = ElementalVariableValue
elementid = 787
variable = strain_yy
[]
[top_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 136
[]
[top_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 136
[]
[plenum_radial_strain_clad]
type = ElementalVariableValue
variable = strain_xx
elementid = 156
[]
[plenum_axial_strain_clad]
type = ElementalVariableValue
variable = strain_yy
elementid = 156
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[pellet_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_surface_temp'
#[]
#[pellet_center_temp]
# type = NodalValueSampler
# variable = temp
# boundary = 12
# sort_by = y
# outputs = 'outfile_FCT'
#[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
#Uncomment to print out axial FCT and PST at every timestep
#[outfile_fuel_surface_temp]
# type = CSV
# execute_on = linear
#[]
#[outfile_FCT]
# type = CSV
# execute_on = linear
#[]
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/triso_failure/sub.i)
[GlobalParams]
density = 10810.0 # kg/m^3
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18 # n/m^2-sec
[]
[fission_gas_release] # Sifgr fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (bison kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10 #47787559927.148 #3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
# petsc_options = '-snes_mf_operator -snes_ksp_ew -ksp_monitor'
# petsc_options_iname = '-pc_type -pc_hypre_type'
# petsc_options_value = 'hypre boomeramg'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 2
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[ipyc_cracking]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
failure_type = IPYC_CRACKING
[]
[burnup_at_failure]
type = TRISOFailureOccurrenceStatus
failure_evaluation = ipyc_cracking
failure_information = burnup
[]
[left_bc]
type = NodalExtremeValue
boundary = xzero
variable = disp_x
[]
[]
[UserObjects]
[triso_failure_terminator]
type = Terminator
expression = 'triso_failure > 0'
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = false
perf_graph = true
[]
[Controls]
[stochastic]
type = SamplerReceiver
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_fuel_rod.i)
#
# Simple fuel rod example for relocation recovery.
#
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
pellet_quantity = 1
pellet_height = 0.01
pellet_outer_radius = 4.1e-3
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.0e-2
elem_type = QUAD8
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 6.327640e+07 6.33628e7 6.34492e7 1.0e08'
y = '0 2.5e4 2.5e4 0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = pin_geometry
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[gas_swell]
type = MaterialRealAux
block = pellet
variable = gas_swell
property = gas_swelling
execute_on = nonlinear
[]
[volumetric_strain]
type = RankTwoScalarAux
block = pellet
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = nonlinear
[]
[elastic_strain_rr]
type = RankTwoAux
variable = elastic_strain_rr
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[total_strain_rr]
type = RankTwoAux
variable = total_strain_rr
rank_two_tensor = total_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[stress_rr]
type = RankTwoAux
variable = stress_rr
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[elastic_strain_yy]
type = RankTwoAux
variable = elastic_strain_yy
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[total_strain_yy]
type = RankTwoAux
variable = total_strain_yy
rank_two_tensor = total_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[elastic_strain_zz]
type = RankTwoAux
variable = elastic_strain_zz
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[total_strain_zz]
type = RankTwoAux
variable = total_strain_zz
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = nonlinear
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = nonlinear
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = nonlinear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.5e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1e12
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[UserObjects]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
# [avg_gap]
# type = LayeredAverage
# block = pellet
# variable= penetration
# direction = y
# num_layers = 1
# execute_on = timestep_end
# []
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
time_t = '0 1.0e4 6.327640e+07 6.33628e7 6.34492e7 1.0e08'
time_dt = '2e2 1e3 1e3 1e3 1e3 1e3'
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[reloc_strain]
type = ElementAverageValue
variable = relocation_strain
block = pellet
execute_on = timestep_end
[]
[contact_pressure]
type = ElementAverageValue
variable = contact_pressure
block = pellet
execute_on = nonlinear
[]
[average_contact_pressure]
type = ElementAverageValue
variable = layered_average_contact_pressure
block = pellet
execute_on = timestep_end
[]
[clad_crp_zz]
type = SideAverageValue
boundary = 5
variable = creep_strain_zz
execute_on = timestep_end
[]
[clad_crp_xx]
type = SideAverageValue
boundary = 5
variable = creep_strain_xx
execute_on = timestep_end
[]
[clad_creep_increment]
type = SideAverageIncrementTensorComponent
boundary = 5
variable = creep_strain_zz
execute_on = timestep_end
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = pellet
execute_on = timestep_end
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
execute_on = timestep_end
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
execute_on = timestep_end
[]
[elastic_strain_rr]
type = ElementAverageValue
variable = elastic_strain_rr
block = pellet
execute_on = nonlinear
[]
[total_strain_rr]
type = ElementAverageValue
variable = total_strain_rr
block = pellet
execute_on = nonlinear
[]
[stress_rr]
type = ElementAverageValue
variable = stress_rr
block = pellet
execute_on = timestep_end
[]
[elastic_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
block = pellet
execute_on = nonlinear
[]
[total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
block = pellet
execute_on = nonlinear
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
block = pellet
execute_on = timestep_end
[]
[elastic_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
block = pellet
execute_on = nonlinear
[]
[total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
block = pellet
execute_on = timestep_end
[]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
block = pellet
execute_on = timestep_end
[]
[thermal_strain_rr]
type = DifferencePostprocessor
value1 = total_strain_rr
value2 = elastic_strain_rr
execute_on = timestep_end
[]
[thermal_strain_yy]
type = DifferencePostprocessor
value1 = total_strain_yy
value2 = elastic_strain_yy
execute_on = timestep_end
[]
[thermal_strain_zz]
type = DifferencePostprocessor
value1 = total_strain_zz
value2 = elastic_strain_zz
execute_on = timestep_end
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[recov_strain]
type = ElementAverageValue
variable = recovered_relocation_strain
block = pellet
execute_on = timestep_end
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'reloc_strain recov_strain'
execute_on = 'FINAL'
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
(assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363.i)
initial_fuel_density = 10233 #93.2% of TD (TD assumed to be 10980)
[GlobalParams]
density = ${initial_fuel_density} #93.2% of TD (TD assumed to be 10980)
initial_porosity = 0.068
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = HBEP.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300 # set initial temp to ambient
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 10.53e-6 # = 13.5e-6 experimental dia * 1.56 /2
[]
[fast_neutron_flux]
block = '1'
[]
[fast_neutron_fluence]
block = '1'
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# reads and interpolates an input file containing rod average linear power vs time
type = PiecewiseLinear
data_file = BK363_linear_power.csv
format = columns
[]
[axial_peaking_factors]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK363_power_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
# reads and interpolates input data defining amplitude curve for coolant pressure
type = PiecewiseLinear
#Ambient for initial build @ 0.101353 MPa, PWR @ 13.73 MPa and PIE @ 0.101353 MPa
x = '-100 0 137115360 137118960'
y = '0.007382 1 1 0.007382'
[]
[flux]
type = PiecewiseLinear
data_file = BK363_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = BK363_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
# reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = BK363_clad_temp_peaking_factors.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress creep_strain_xx
creep_strain_yy creep_strain_xy'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat cnduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
# source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1 # fission rate applied to the fuel only
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
a_lower = 0.00324
a_upper = 1.02024
fuel_outer_radius = 4.095e-3
fuel_inner_radius = 1.24e-3
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0707 0.9293 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = '1'
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = '1'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_hoop]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
index_i = 2
index_j = 2
execute_on = timestep_end
block = 1
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
block = 1
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5 # clad
secondary = 10 # fuel
penalty = 1e7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10 # fuel
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
primary = 5 # clad
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = .955e-6
roughness_primary = 1.5e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 13.73e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.40e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10233
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 300
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = .00819
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =1.7e-4 #diameteral gap
relocation_activation1 = 5000 # initial relocation activation power set to 5kW/m
burnup_relocation_stop = .035
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 50
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 137118960
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 2e6
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block =pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.017 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
variable = temp
nodeid = 4784
[]
[maxFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
variable = penetration
[]
[minFuelPenetration]
type = NodalExtremeValue
boundary = 10 # pellet_centerline
value_type = min
variable = penetration
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/IFA_636/analysis/IFA_636/IFA_636.i)
initial_fuel_density = 10551.78
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_mesh_density = customize
clad_mesh_density = customize
pellet_quantity = 1
pellet_height = 0.392
pellet_outer_radius = 4.097e-3
ny_p = 40
nx_p = 11
clad_gap_width = 78e-6
clad_bot_gap_height = 1e-3
plenum_fuel_ratio = 0.21628
clad_thickness = 0.5715e-3
nx_c = 4
ny_c = 80
ny_cl = 3
ny_cu = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 5e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = IFA_636_power_history.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = IFA_636_axial_peaking.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 213162351 213260400'
y = '0.0307 1 1 0.0307'
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = IFA_636_clad_bc.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_swelling_eigenstrain
fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
creep_strain_xx creep_strain_xy creep_strain_yy creep_strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6e12
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
execute_on = timestep_end
block = pellet
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00324000
a_upper = 0.39524
fuel_volume_ratio = 1
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0040975
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0425 0.9575 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.33e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
initial_fuel_density = 10551.78
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_swelling_eigenstrain
[]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.039
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
diameter = 0.008194
diametral_gap =156.0e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.029
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.039
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'clad_creep'
tangent_operator = 'elastic'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradition_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 213260400
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
burnup_function = burnup
variable = temp
[]
[fuel_disp_y_average]
type = AverageNodalVariableValue
boundary = top_of_top_pellet
variable = disp_y
[]
[volumetric_strain]
type = ElementAverageValue
block = pellet
variable = deltav_v0_swe
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet
cladding_blocks = clad
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released fuel_disp_y_average rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_2/IFA_650_2.i)
initial_fuel_density = 10412
[GlobalParams]
density = ${initial_fuel_density} # 0.95TD UO2, TD=10960
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh_ife6502_medium2.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
initial_condition = 5.e-06 # !! assumption
[]
[max_fission_rate]
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[average_linear_heat_rate]
type = PiecewiseLinear
data_file = linear_heat_rate_av.csv
format = columns
scale_factor = 1
[]
[axial_power_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors_lhr.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[average_clad_outer_temperature]
type = PiecewiseLinear
data_file = temperature_clad_outer_av.csv
format = columns
scale_factor = 1
[]
[axial_temperature_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors_ctemp.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_outer_temperature]
type = CompositeFunction
functions = 'average_clad_outer_temperature axial_temperature_peaking_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = pressure_rig.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[uo2nat]
block = 'pellet_type_1 pellet_type_3'
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'uo2nat_thermal_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[fuel]
block = pellet_type_2
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
[]
[clad]
block = clad
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
#extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
#extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
#extra_vector_tags = 'ref'
block = pellet_type_2
fission_rate = fission_rate
decay_heat_function = decay_heat_function # Couple to postprocessor which defines the decay heat function
max_fission_rate = max_fission_rate # Couple to auxvariable which defines maximum fission rate over irradiation
[]
[]
[Burnup]
[burnup]
block = pellet_type_2
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 28.5e-03 # mesh dependent
a_upper = 528.5e-03 # mesh dependent
fuel_inner_radius = 0.
fuel_outer_radius = 4.145e-03
fuel_volume_ratio = 1. # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
factor = 3.e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_2
variable = grain_radius
temperature = temp
execute_on = linear
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = pellet_type_2
fission_rate = fission_rate
execute_on = timestep_begin
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_cond
[]
[nbbl2]
type = MaterialRealAux
block = pellet_type_2
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[radbbl]
type = MaterialRealAux
block = pellet_type_2
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[stcvrg]
type = MaterialRealAux
block = pellet_type_2
variable = sat_coverage
property = sat_coverage
[]
[frcvrg]
type = MaterialRealAux
block = pellet_type_2
variable = GBCoverage
property = GBCoverage
[]
[dvv0bd]
type = MaterialRealAux
block = pellet_type_2
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.e+07
[]
[]
#TODO: Add option in StandardLWRFuelRodOutputs to compute plenum temperature this way.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_outer_temperature
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 4.e+06
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_2
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_2
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup_function = burnup
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_2
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_2
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_2
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_2
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
initial_fuel_density = 10447.
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_2
burnup_function = burnup
diameter = 0.00829
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
diametral_gap =70.e-06
burnup_relocation_stop = 1.e+20
eigenstrain_name = fuel_relocation_eigenstrain
relocation_activation1 = 19685.039
[]
[fission_gas]
type = UO2Sifgrs
block = pellet_type_2
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temp
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0 #TODO: It is odd to have different values for fuel and clad, but keeping this way to match SM
eigenstrain_name = clad_thermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1.e+11
poissons_ratio = 0.3
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 3.e-03
#TODO: The parameters below really should be provided, but they weren't specified in the SM model.
# They may have not been included because irradiation creep wasn't modeled. However, they are used in the thermal
# creep model as well.
# fast_neutron_flux = fast_neutron_flux
# fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
#eff_strain_rate_plast =
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temp
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_3'
thermal_conductivity = 3. # !! assumption
specific_heat = 300. # !! assumption
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_3'
strain_free_density = ${initial_fuel_density}
[]
[uo2nat_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_3'
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = uo2nat_thermal_strain
[]
[uo2nat_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_3'
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1.e-02
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -200
n_startup_steps = 1
end_time = 229440
dtmax = 2700. #1000.
dtmin = 0.00000001
[TimeStepper]
type = IterationAdaptiveDT
dt = 200.
#optimal_iterations = 4
#iteration_window = 2
#linear_iteration_ratio = 100
timestep_limiting_function = average_clad_outer_temperature
max_function_change = 10
timestep_limiting_postprocessor = material_timestep
time_t = '-200. 0. 3.5e+04 216000. 218700. 219180. 219240. 219799. 219819. 219821. 219999.'
time_dt = ' 200. 900. 2700. 2700. 60. 60. 20. 20.
10. 10. 2.'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = true
[]
[]
[Postprocessors]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = 100000001.
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temp
block = clad
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
value_type = max
variable = temp
block = pellet_type_2
execute_on = 'initial timestep_end'
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temp
nodeid = 54 # Global node ID = 55 !! Mesh dependent
execute_on = 'initial timestep_end'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial linear'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial linear'
[]
[alhr_input]
type = FunctionValuePostprocessor
function = average_linear_heat_rate
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_oxygen_fgain]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfgain_total
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
block = clad
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
block = clad
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_2
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
print_linear_residuals = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[out_vector_pp]
execute_vector_postprocessors_on = 'timestep_end'
type = CSV
[]
[]
(assessment/LWR/validation/IFA_597_3/analysis/rod_7/IFA_597_rod7_glued.i)
initial_fuel_density = 10500.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 10
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ifa_597r7.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = '3 4'
initial_condition = 6.1074e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
data_file = 597-R7_linear_power.csv
format = columns
scale_factor = 1.0526316
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = 597-R7_axial_power_peaking_factors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 269029548 269030508 269055648 269056588 280124964 280125427'
y = '0 1 1 0.014475 0.014475 0.457 0.457 0.014475'
[]
[flux]
type = PiecewiseLinear
data_file = flux.csv
format = columns
[]
[clad_average_temp]
type = PiecewiseLinear
data_file = 597-R7_clad_outer_temperature.csv
format = columns
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = '3 4'
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3 4'
fission_rate = fission_rate
fraction = 0.95 # per Glyn Rossiter's suggestion
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = '3 4'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_lower = 0.00324
a_upper = 0.3571
fuel_inner_radius = 0.000
fuel_outer_radius = 0.0052195
fuel_volume_ratio = .994899
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.03347 0.96653 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3 4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e9
formulation = penalty
model = glued
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = 1.3e-6
roughness_primary = 1.38e-6
roughness_coef = 3.2
contact_pressure = contact_pressure
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
refab_time = 269055648
refab_gas_types = He
refab_fractions = 1
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_average_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 #changes to 3.2e6 after 59 MWd/kgUO2
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e5 #changes to 5e5 after 59 MWd/kgUO2
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 269055648
refab_pressure = 5e5
refab_temperature = 500
refab_volume = 6e-6
[]
[]
[]
[Materials]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = '3 4'
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
initial_fuel_density = 10500.0
[]
[fuel_thermal]
type = UO2Thermal
block = '3 4'
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
initial_porosity = 0.04372
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3 4'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = '3 4'
temperature = temp
stress_free_temperature = 297
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = '3 4'
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = '3 4'
burnup_function = burnup
diameter = 0.010439
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =2.11e-4
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='clad_creep_stress'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 297
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3 4'
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.04372
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
[]
[density_clad]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[density_fuel]
type = StrainAdjustedDensity
block = '3 4'
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 280125427
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
optimal_iterations = 20
linear_iteration_ratio = 100
dt = 100
force_step_every_function_point = true
timestep_limiting_function = power_profile
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block ='3 4'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3 4'
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = exodus
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = exodus
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3 4'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.3539 # rod height
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_profile
fuel_outer_radius = 0.0052195
fuel_inner_radius = 0.000
outputs = exodus
[]
[power_tc_location]
type = FunctionValuePostprocessor
function = q
point = '0 0.33319 0'
[]
[TC_temp]
type = NodalVariableValue
variable = temp
nodeid = 7476 # Global NodeID 7477
[]
[elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 1887 # Global NodeID 1888
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = '3 4'
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage TC_temp rod_total_power elongation'
execute_on = 'FINAL'
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_vswelling/gas_only3.i)
#
# Test of fission product swelling - SIFGRS_IG option
#
# The first step has zero power. The porosity should be 0.05. Since the first step has zero power, gas swelling should be 0.
#
[GlobalParams]
density = 10430.0
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[gen]
type = ExamplePatchMeshGenerator
dim = 3
[]
[]
[Functions]
[power]
type = PiecewiseLinear
x = '0 0.1 0.2'
y = '0 0 2e16'
[]
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 1400
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
initial_condition = 10e-6
[]
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[initial_bubble_GB_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[]
[Burnup]
[burnup]
block = '1 2 3 4 5 6 7'
rod_ave_lin_pow = power
axial_power_profile = '1e0'
num_radial = 80
num_axial = 11
rpf_active = false
fuel_volume_ratio = 1
a_lower = 0
a_upper = 1
fuel_inner_radius = 0
fuel_outer_radius = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
add_variables = true
eigenstrain_names = swelling
strain = finite
[]
[AuxKernels]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[grain_radius]
type = GrainRadiusAux
block = '1 2 3 4 5 6 7'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[por]
type = PorosityAuxUO2
variable = porosity
execute_on = 'initial timestep_end'
[]
[ibvf]
type = MaterialRealAux
variable = initial_bubble_GB_volume_fraction
property = initial_bubble_GB_volume_fraction
execute_on = 'initial timestep_end'
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS_IG
block = '1 2 3 4 5 6 7'
temperature = temperature
burnup_function = burnup
complete_burnup = 5
total_densification = 0.01
initial_fuel_density = 10430.0
include_gas_swelling = true
include_solid_swelling = false
include_densification = false
eigenstrain_name = swelling
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '1 2 3 4 5 6 7'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
ig_bubble_model = NUCLEATION_RESOLUTION
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temperature
burnup_function = burnup
[]
[density]
type = StrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10430.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 11
[]
[Postprocessors]
[volume]
type = InternalVolume
boundary = '1 2 3 4 5 6'
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[initial_bubble_GB_volume_fraction]
type = ElementAverageValue
variable = initial_bubble_GB_volume_fraction
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temperature'
[]
(test/tests/triso_failure/triso_1d_asphericity_failure.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_change_correlation_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[stress_yy]
type = RankTwoCartesianComponent
rank_two_tensor = stress
property_name = stress_yy
index_i = 1
index_j = 1
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = stress_yy
high_fidelity_analysis_strength = 'high_fidelity_strength_asphericity'
stress_correlation_function = 'stress_correlation_asphericity'
stress_change_correlation_function = 'stress_change_correlation_asphericity'
[]
[triso_failure]
type = TRISOFailureEvaluation
SiC_failure = failure_indicator_SiC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(examples/2D_plane_strain_rod/planestrain.i)
initial_fuel_density = 10431.0
[GlobalParams]
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
patch_size = 100 # For contact algorithm
[mesh]
type = FileMeshGenerator
file = planestrain.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 580.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[fission_rate]
block = pellet_type_1
[]
[burnup]
block = pellet_type_1
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[relocation_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '0 1e4'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
[]
[clad]
block = clad
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 21
axial_direction = z
density = ${initial_fuel_density}
a_lower = -1e-3 # mesh dependent!
a_upper = 1e-3 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
RPF = RPF
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[relocation_strain]
type = MaterialRealAux
property = relocation_strain
variable = relocation_strain
block = pellet_type_1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 8
execute_on = linear
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 7
secondary = 8
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
[]
[]
[BCs]
# Define boundary conditions
[no_y_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_y
boundary = 15
value = 0.0
[]
[no_x_all] # pin pellets and clad along axis of symmetry (x)
type = DirichletBC
variable = disp_x
boundary = 16
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxBC
boundary = '2'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 580.0
final = 580.0
duration = 1.0e4 #duration of initial power ramp
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = pellet_type_1
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_solid_mechanics_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
temperature = temp
eigenstrain_name = 'fuel_volumetric_eigenstrain'
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
density = 10431.0
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 1.e20
relocation_activation1 = 5000
axial_direction = z
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'clad_irradiation_eigenstrain'
[]
[fission_gas_release] # Forsberg-Massih fission gas release mode
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius = 10.0e-6
#external_pressure = 40e6
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
# PETSC options:
# petsc_options
# petsc_options_iname
# petsc_options_value
#
# controls for linear iterations
# l_max_its
# l_tol
#
# controls for nonlinear iterations
# nl_max_its
# nl_rel_tol
# nl_abs_tol
#
# time control
# start_time
# dt
# optimal_iterations
# iteration_window
# linear_iteration_ratio
type = Transient
solve_type = 'PJFNK'
petsc_options = '-ksp_gmres_modifiedgramschmidt'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_composite_pcs -sub_0_pc_hypre_type -sub_0_pc_hypre_boomeramg_max_iter -sub_0_pc_hypre_boomeramg_grid_sweeps_all -sub_1_sub_pc_type -pc_composite_type -ksp_type -mat_mffd_type'
petsc_options_value = '201 composite hypre,asm boomeramg 2 2 lu multiplicative fgmres ds'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0.0
end_time = 1.0e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
time_t = '1e4 1e5 1e6'
time_dt = '1e3 1e4 1e5'
[]
dtmax = 2e6
dtmin = 1
# optimal_iterations = 6
# iteration_window = 2
# linear_iteration_ratio = 100
[Quadrature]
order = THIRD
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[average_interior_clad_temperature] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[average_centerline_fuel_temperature] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial timestep_end'
[]
[plenum_volume] # gas volume
type = InternalVolume
boundary = 9
addition = 1.3e-5 #rough guess of plenum volume/unit length of fuel
execute_on = 'initial linear'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_generated] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = linear
[]
[fission_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
execute_on = timestep_end
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_generated
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_11/case_11_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density} # kg/m^3
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1608.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 1.1135e20 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC_OPyC]
block = 'IPyC OPyC'
strain = finite
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[rest]
block = 'fuel buffer SiC'
strain = finite
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_fractions = '0.153 0.847;
1'
released_gas_types = 'Kr Xe;
CO'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1608.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 2.37417e18 # n/m^2-sec
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1608.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1608.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1608.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.032e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BEN013/BEN013.i)
################################################################################
#
# Description: Calvert Cliffs BEN013
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BEN013_power.csv
# axial peaking factor file BEN013_axial_peaking.csv
# flux boundary condition file BEN013_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07 #94.882 %TD Assume TD = 10972.65 kg/cm3
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28581
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BEN013_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BEN013_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177922434 177922794'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177922434 177922794'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BEN013_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177922794
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
# execute_on = 'FINAL'
sync_times = '3600 7200 10800 14400 177922434 177922794'
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/2D-RZ_rodlet_10pellets/smeared_smallStrain/Smeared_smallStrain.i)
# Model is of a 10 pellet stack of smeared fuel (pellet_type_2).
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ../smeared.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors12.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = SMALL
incremental = true
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = SMALL
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent
a_upper = 0.12184 # mesh dependent
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
quadrature = true
contact_pressure = contact_pressure
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
use_displaced_mesh = false
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
use_displaced_mesh = false
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal] # general thermal property input
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[centerline_temp]
type = AxisymmetricCenterlineAverageValue
boundary = 12
variable = temp
execute_on = linear
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[mid_penetration]
type = NodalVariableValue
nodeid = 584 # mesh dependent, at (0.0041, 0.0546333)
variable = penetration
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temp
nodeid = 584 # mesh dependent, at (0.0041, 0.0546333)
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 165 # mesh dependent
variable = vonmises_stress
[]
[center_hoop_clad]
type = ElementalVariableValue
elementid = 425 # mesh dependent
variable = stress_zz
[]
[center_effective_creep_strain_inner]
type = ElementalVariableValue
elementid = 425 # mesh dependent
variable = effective_creep_strain
[]
[center_effective_creep_strain_outer]
type = ElementalVariableValue
elementid = 422 # mesh dependent
variable = effective_creep_strain
[]
[effective_creep_strain]
type = ElementAverageValue
variable = effective_creep_strain
[]
[center_effective_creep_rate_inner]
type = ElementalVariableValue
elementid = 425 # mesh dependent
variable = creep_strain_rate
[]
[center_effective_creep_rate_outer]
type = ElementalVariableValue
elementid = 422 # mesh dependent
variable = creep_strain_rate
[]
[effective_creep_strain_rate]
type = ElementAverageValue
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'tm_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'tm_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[tm_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[tm_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/uo2_thermal/Staicu/test.i)
# This test case is prepared to test the thermal conductivity using the Staicu model.
#
# The temperature is ramped on all BCs of the unit line from 500K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
initial_fuel_density = 10431.0
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = BurnupAux
variable = burnup
density = ${initial_fuel_density} # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = STAICU
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ParsedMaterial
property_name = density
expression = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/IFA_716/analysis/IFA_716_Base.i)
# This file contains all characteristics common to the entire assessment
# NOTE: This file requires information contained in subsequent files and therefore is not designed to run on its own
# Fuel material properties
total_densification = 0.0015 # (-)
# Cladding material properties
cold_work_factor = 0.2 # (-)
zircaloy_alloy_type = 4
cladding_density = 6550.0 # kg/m^3
# Cladding geometry
clad_inner_radius = 4.65e-3 # m
clad_outer_radius = 5.375e-3 # m
# Fuel geometry
num_radial = 80
num_axial = 11
a_lower = 0.001025 # m
a_upper = 0.400525 # m
fuel_inner_radius = 0 # m
fuel_outer_radius = 0.456e-02 # m
fuel_volume_ratio = 0.99140 # (-)
fuel_diameter = 9.12e-3 # m
diametral_gap = 180.0e-6 # m
# Neutronics, power, and isotope fractions
energy_per_fission = 3.28451e-11 # J/fission
fast_neutron_flux_factor = 3e13 # n/m^2-s
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Temperature conditions
initial_temperature = 293.0 # K
stress_free_temperature = 293.0 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-200 0'
pressure_ramp_y = '0 1'
coolant_pressure_ramp_factor = 3.4e6 # (-)
# Physical constants
graviational_acceleration_constant = -9.81 # m/s^2
# Plenum parameters
initial_plenum_pressure = 1.0e6 # Pa
startup_time = -200 # s
# Coolant channel parameters
inlet_pressure = 3.4e+06 # Pa
inlet_massflux = 450.0 # kg/m^2-s
rod_diameter = 10.75e-03 # m
rod_pitch = 46.e-03 # m
htc_correlation_type = 2
# Relocation
relocation_activation1 = 5000 # W/m
# Numerical options
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200 # s
n_startup_steps = 1
end_time = 60025104 # s
num_steps = 50000
dtmax = 5e5 # s
dtmin = 0.1 # s
TimeStepper_dt = 2e2 # s
TimeStepper_iteration_window = 2
TimeStepper_growth_factor = 2
TimeStepper_cutback_factor = .5
# Postprocessor parameters
burnup_scaling_factor = 950.0 # GWd/tUO2 per FIMA
time_days_scale_factor = 1.157407407e-5 # days/s
clad_elongation_nodeid = 1085
fuel_elongation_nodeid = 689
upper_TC_temperature_nodeid = 886
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = ${initial_fuel_porosity}
temperature = temperature
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2'
initial_condition = ${initial_grain_radius}
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
scale_factor = 1e3
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = ${axial_peaking_data_file}
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[coolant_inlet_temperature]
type = PiecewiseLinear
data_file = ${coolant_inlet_temperature_data_file}
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = ${add_variables_option}
strain = FINITE
[pellets]
block = 'pellet_type_1 pellet_type_2'
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_eigenstrain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = ${graviational_acceleration_constant}
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = 'pellet_type_1 pellet_type_2'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = ${num_radial}
num_axial = ${num_axial}
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = ${plenum_temperature_inner_surfaces}
outer_surfaces = ${plenum_temperature_outer_surfaces}
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = ${no_y_clad_bottom_boundary}
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = ${no_y_fuel_bottom_boundary}
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${coolant_pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = ${PlenumPressure_boundary}
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = coolant_inlet_temperature
inlet_pressure = ${inlet_pressure}
inlet_massflux = ${inlet_massflux}
rod_diameter = ${rod_diameter}
rod_pitch = ${rod_pitch}
htc_correlation_type = ${htc_correlation_type}
compute_enthalpy = true
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2'
thermal_conductivity_model = HALDEN
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ${fuel_elasticity_tensor_type}
block = 'pellet_type_1 pellet_type_2'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1 pellet_type_2'
burnup_function = burnup
total_densification = ${total_densification}
initial_fuel_density = ${initial_fuel_density}
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_creep]
type = UO2CreepUpdate
block = 'pellet_type_1 pellet_type_2'
fission_rate = fission_rate
oxygen_to_metal_ratio = ${oxygen_to_metal_ratio}
[]
[fuel_thermal_expansion]
type = ${fuel_thermal_expansion_type}
block = 'pellet_type_1 pellet_type_2'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2'
relocation_model = ESCORE_modified
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = ${fuel_relocation_eigenstrain_name}
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = 'pellet_type_1 pellet_type_2'
tangent_operator = elastic
inelastic_models = 'fuel_creep'
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_2'
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
cr_doped_option = BEST_ESTIMATE_1773
[]
[clad_thermal]
type = ${clad_thermal_type}
block = clad
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_zryplasticity'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_primary_creep = true
model_thermal_creep = true
model_irradiation_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = ${cold_work_factor}
zircaloy_alloy_type = ${zircaloy_alloy_type}
plasticity_model_type = ${plasticity_model_type}
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = ${clad_inner_radius}
clad_outer_radius = ${clad_outer_radius}
use_coolant_channel = true
temperature = temperature
fast_neutron_flux = fast_neutron_flux
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = ${solve_type}
petsc_options = '-snes_ksp_ew'
petsc_options_iname = ${petsc_options_iname}
petsc_options_value = ${petsc_options_value}
line_search = ${line_search}
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
num_steps = ${num_steps}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
optimal_iterations = ${TimeStepper_optimal_iterations}
iteration_window = ${TimeStepper_iteration_window}
growth_factor = ${TimeStepper_growth_factor}
cutback_factor = ${TimeStepper_cutback_factor}
force_step_every_function_point = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = NodalExtremeValue
variable = temperature
block = 'pellet_type_1 pellet_type_2'
execute_on = 'initial timestep_end'
[]
[burnup_ave]
type = RodAverageBurnup
burnup_function = burnup
[]
[burnup_ave_MWdkgU]
type = ScalePostprocessor
value = burnup_ave
scaling_factor = ${burnup_scaling_factor}
[]
[temperature_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[gas_volume]
type = InternalVolume
boundary = '9'
execute_on = 'initial linear'
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2'
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2'
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = linear
[]
[nonlinear_its]
type = NumNonlinearIterations
execute_on = linear
[]
[clad_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_elongation_nodeid}
[]
[fuel_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_elongation_nodeid}
[]
[upper_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${upper_TC_temperature_nodeid}
[]
[time_days]
type = FunctionValuePostprocessor
function = t
scale_factor = ${time_days_scale_factor}
[]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'upper_TC_temperature fgr_percent plenum_pressure strain_clad_hoop_max'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(test/tests/thermalUO2/thermalUO2_new_test.i)
# The mesh is a 1x1x1 cube (single element).
# The temperature is ramped on all faces of each cube from 500 K to 1500K.
# The fission rate is from 2e19 n/m3/s, so that the burnup is from 5 at.%
# at the end of the simulation.
# Thermal conductivity is computed using ThermalUO2 material model.
#
#
# The thermal conductivity computed by BISON was picked up each 10 time
# steps for each block, and compared with analytical solution
# The results are the following:
#
# Temp (k) Bu (at. %) BISON k (W/m/K) analytical k (W/m/K)
# 700.172 0.999619 3.76750 3.76765
# 900.344 1.99924 3.11527 3.11527
# 1100.52 2.99886 2.75603 2.75603
# 1300.69 3.99848 2.36929 2.36929
# 1500.00 4.99810 2.07300 2.07300
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1x1x1cube.e
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 500 # set initial T to 500 K
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
block = 1
[]
[burnup]
order = FIRST
family = LAGRANGE
block = 1
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = NeutronHeatSource
variable = T
block = 1
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
block = 1
value = 2e19 # Standard fission_rate
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = MaterialRealAux
variable = th_cond
property = thermal_conductivity
block = 1
execute_on = linear
[]
[burnup]
type = BurnupAux
block = 1
variable = burnup
density = 10431.0
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 5.81e7'
y = '500 1500'
[]
[]
[BCs]
[VariableT]
type = FunctionDirichletBC
boundary = 2 # All cube faces
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermalUO2]
type = UO2Thermal
block = 1
thermal_conductivity_model = FINK_LUCUTA
temperature = T
burnup = burnup
initial_porosity = 0.05
[]
[density]
type = ParsedMaterial
block = 1
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1.163e6
[]
[Outputs]
file_base = out_new
[exodus]
type = Exodus
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/gas_only2.i)
#
# Test of fission product swelling - gas only (900K)
#
# With a burnup of 0.00714, the volumetric strain should be 0.0001.
# This is easily checked with the 'volume' postprocessor value.
#
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = patch.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 900.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'swelling'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
density_name = 'reg_density'
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.00714'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[gas_swell]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = ADRankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[]
[bottom_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0.0
[]
[bottom_temp]
type = DirichletBC
variable = temp
boundary = 3
value = 900.0
[]
[top_temp]
type = DirichletBC
variable = temp
boundary = 5
value = 900.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = '1 2 3 4 5 6 7'
youngs_modulus = 1
poissons_ratio = 0.3
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = '1 2 3 4 5 6 7'
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
initial_fuel_density = 10430.0
include_gas_swelling = true
include_solid_swelling = false
include_densification = false
eigenstrain_name = swelling
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = '1 2 3 4 5 6 7'
[]
[thermal]
type = UO2Thermal
block = '1 2 3 4 5 6 7'
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = ADStrainAdjustedDensity
block = '1 2 3 4 5 6 7'
strain_free_density = 10430.0
[]
[converter]
type = MaterialADConverter
ad_props_in = 'density'
reg_props_out = 'reg_density'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = InternalVolume
boundary = 15
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = 4
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
hide = 'disp_x disp_y disp_z temp'
file_base = gas_only2_out
[]
(test/tests/uo2_thermal/Halden/ad_test.i)
# This test case is prepared to test the thermal conductivity using the Halden model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the Halden UO2 thermal conductivity model.
# The BISON predictions (BISON_k) compared to the expected results (expected_k)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error expected_Pu_k BISON_Pu_k percent_error_Pu
# 5.869784658 5.869784658 -7.55E-13 5.401819451 5.401819451 -1.55E-13
# 5.580864694 5.580864694 5.22E-13 5.136090924 5.136090924 3.77E-13
# 5.320199198 5.320199198 -7.11E-13 4.896360254 4.896360254 9.77E-13
# 5.083868147 5.083868147 -6.88E-13 4.6790212 4.6790212 -1.04E-12
# 4.868646629 4.868646629 2.00E-13 4.481107031 4.481107031 5.33E-13
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate fissions/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = ADBurnupAux
variable = burnup
density = 10431.0 # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = ADFunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = HALDEN
oxy_to_metal_ratio = 2.0
initial_porosity = 0.05
Gd_content = 0.0
[]
[density]
type = ADParsedMaterial
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/uo2_thermal/NFImod/ad_test.i)
# This test case is prepared to test the thermal conductivity using the Modified NFI model.
#
# The temperature is ramped on all BCs of the unit line from 500 K to 3000K over 100 Ms.
# The fission rate is 2e19 n/m3/s, so that the burnup goes from 0 to
# ~ 8.6 at.% (82 MWd/kgU) at the end of the simulation.
#
# Thermal conductivity of UO2 fuel at 95%TD is computed using the NFI modified thermal conductivity model.
# The BISON predictions (BISON_k) compared to the expected results (expected_k)
# are summarized (see: post_processing.py --> comparison_results.csv) as:
#
# expected_k BISON_k percent_error
# 5.945042197 5.945042197 -8.22E-13
# 5.540045922 5.540045922 -8.44E-13
# 5.252710693 5.252710693 6.77E-13
# 4.995710341 4.995710341 -8.66E-13
# 4.763281724 4.763281724 8.88E-14
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
[geom]
type = GeneratedMeshGenerator
dim = 1
elem_type= EDGE2
[]
[]
[Variables]
[T]
initial_condition = 500
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[th_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = ADNeutronHeatSource
variable = T
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable= fission_rate
value = 2e19 # Standard fission_rate n/m^3/s
execute_on = 'initial timestep_begin'
[]
[th_cond]
type = ADMaterialRealAux
variable = th_cond
property = thermal_conductivity
execute_on = 'initial linear'
[]
[burnup]
type = ADBurnupAux
variable = burnup
density = 10431.0 # 95% TD
fission_rate = fission_rate
execute_on = timestep_begin
[]
[]
[Functions]
[temp_ramp]
type = PiecewiseLinear
x = '0.0 100.e6'
y = '500 3000'
[]
[]
[BCs]
[VariableT]
type = ADFunctionDirichletBC
boundary = 'left right'
variable = T
function = temp_ramp
[]
[]
[Materials]
[fuel_thermalUO2]
type = ADUO2Thermal
temperature = T
burnup = burnup
thermal_conductivity_model = MODIFIED_NFI
Gd_content = 0.00
initial_porosity = 0.05
oxy_to_metal_ratio = 2.0
[]
[density]
type = ADParsedMaterial
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
start_time = 0
num_steps = 100
dt = 1.0e6
[]
[Postprocessors]
[avg_th_cond]
type = ElementAverageValue
variable = th_cond
execute_on = 'initial timestep_end'
[]
[average_rod_burnup]
type = ElementAverageValue
variable = burnup
execute_on = timestep_end
[]
[average_fuel_T]
type = ElementAverageValue
variable = T
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[]
(test/tests/uo2_transient_fission_gas_release/uo2_pulverization_transient_FGR_1D.i)
# This file is to test the transient fission gas release model that accounts for
# the amount of fission gas released as a result of fuel pulverization.
# It uses evolve_bubble_pressure_hbs = true and the 3D phase field criterion for
# pulverization.
# Local pulverization is tracked with the material property pulverized, which is
# 0 where pulverization has not occured and 1 where it has occurred.
# A material property uses the local pulverization to compute the
# amount of fission gas released as a results of fuel pulverization.
# This material property is output to the exodus file for this test.
# At each time step, the pulverized material property is computed, as well as
# the bubble radius and amount of fission gas in bubbles. These material property
# are then used to determine the amount of fission gas release due to pulverization.
# This amount predicted by the material block
# UO2PulverizationTransientFissionGasRelease is compared with analytical calculations
# made in the material block fission_gas_released_amount for verification.
# This input is the non-AD version.
hydrostatic_stress_constant = 1e7
[GlobalParams]
value_range_behavior = WARN
[]
[Mesh]
type = GeneratedMesh
dim = 1
nx = 10
xmax = 4.5e-3 # m pellet outer radius
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 600
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pulverized_aux]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 'x*1.6*t/4.275'
[]
[temperature_function]
type = ParsedFunction
expression = 'if(t < 100, 900, 900+(t-100)*200)'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pulverized]
type = MaterialRealAux
variable = pulverized_aux
property = pulverized
execute_on = 'initial nonlinear'
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
boundary = 'left right'
variable = temperature
function = temperature_function
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = temperature
fission_rate = fission_rate
burnup = burnup
skip_bdr_model = true
ig_bubble_model = MECHANISTIC_AAGESEN
hbs_model = true
hbs_material = hbs_formation
pulverization_model = true
pulverization_transient_fission_gas_release_material = UO2PulverizationTransientFissionGasRelease
ig_diff_algorithm = FORMAS
hydrostatic_stress_const = ${hydrostatic_stress_constant}
igdiffcoeff_scalef_HBS = 1e24 # Ensures that all the generated fission gases diffuse from the HBS matrix to the HBS bubbles
output_properties = 'bubble_concentration_intra_non_restructured bubble_radius_intra_non_restructured gas_concentration_bubble_intra_non_restructured gas_concentration_matrix_intra_non_restructured bubble_GB_volume_density_non_restructured bubble_radius_GB_non_restructured gas_concentration_GB_bubble_volume_non_restructured deltav_v0_intra_total bubble_concentration_intra_HBS bubble_radius_intra_HBS gas_concentration_bubble_intra_HBS gas_concentration_matrix_intra_HBS bubble_GB_volume_density_HBS bubble_radius_GB_HBS gas_concentration_GB_bubble_volume_HBS atom_per_bubble_GB_HBS gas_concentration_release_total'
outputs = 'exodus'
[]
[uo2pulverizationmesoscale]
type = UO2PulverizationMesoscale
temperature = temperature
output_properties = pulverized
pulverization_criterion_type = phase_field_3D
outputs = exodus
[]
[dummy_stress]
type = GenericConstantRankTwoTensor
tensor_name = 'stress'
tensor_values = '-${hydrostatic_stress_constant} -${hydrostatic_stress_constant} -${hydrostatic_stress_constant} 0 0 0'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup_function
output_properties = hbs_porosity
outputs = exodus
[]
[hbs_formation]
type = HighBurnupStructureFormation
temperature = temperature
burnup = burnup
threshold_temperature = 1273.15 # default
output_properties = hbs_volume_fraction
outputs = exodus
[]
[fission_gas_density_bubble_HBS] # moles/m^3
type = ParsedMaterial
property_name = 'rho_FG_hbs'
material_property_names = 'atom_per_bubble_GB_HBS bubble_GB_volume_density_HBS'
constant_names = 'Na'
constant_expressions = '6.02214076e23'
expression = 'atom_per_bubble_GB_HBS * bubble_GB_volume_density_HBS / Na'
outputs = exodus
[]
[opened_pore_volume_fraction] # -
type = ParsedMaterial
property_name = 'f_V_pul'
material_property_names = 'hbs_porosity bubble_radius_GB_HBS'
constant_names = 'fragment_size c_p c_r c_0'
constant_expressions = '5e-5 0.03 5.17 0.02'
expression = 'c_p * hbs_porosity + c_r * bubble_radius_GB_HBS/fragment_size + c_0'
outputs = exodus
[]
[fission_gas_released_amount_analytical] # moles/m^3
type = ParsedMaterial
property_name = 'fis_gas_rel'
material_property_names = 'f_V_pul rho_FG_hbs pulverized'
expression = 'pulverized * f_V_pul * rho_FG_hbs'
outputs = exodus
[]
[UO2PulverizationTransientFissionGasRelease] # moles/m^3
type = UO2PulverizationTransientFissionGasRelease
output_properties = 'gas_concentration_release_pulverization'
outputs = exodus
[]
[]
[Postprocessors]
[FG_amount_bubble_HBS]
type = ElementIntegralMaterialProperty
mat_prop = rho_FG_hbs
[]
[FGR_transient_pulverization_analytical]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
[]
[FGR_transient_pulverization]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_pulverization
[]
[FGR_pps_diff_bison_analytical]
type = DifferencePostprocessor
value1 = FGR_transient_pulverization_analytical
value2 = FGR_transient_pulverization
[]
[FG_pps_diff_total_released]
type = DifferencePostprocessor
value1 = FG_amount_bubble_HBS
value2 = FGR_transient_pulverization
[]
[fis_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released_total]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released_total
fission_gas_generated = fis_gas_generated
[]
[gas_amount_bubble_intra_non_restructured]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra_non_restructured
[]
[gas_amount_matrix_intra_non_restructured]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra_non_restructured
[]
[bubble_amount_intra_non_restructured]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra_non_restructured
[]
[bubble_radius_intra_average_non_restructured]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra_non_restructured
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[gas_amount_hbs_GB_bubbles]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume_HBS
[]
[gas_amount_hbs_matrix]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra_HBS
[]
[gas_amount_hbs_intra_bubbles]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra_HBS
[]
[gas_amount_hbs_intra_total]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_intra_total_HBS
[]
[bubble_amount_GB_hbs]
type = ElementIntegralMaterialProperty
mat_prop = bubble_GB_volume_density_HBS
[]
[bubble_radius_GB_average_hbs]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_GB_HBS
[]
[volume_domain]
type = ElementIntegralMaterialProperty
mat_prop = 1
execute_on = TIMESTEP_END
[]
[hbs_volume]
type = ElementIntegralMaterialProperty
mat_prop = hbs_volume_fraction
execute_on = TIMESTEP_END
[]
[hbs_volume_fraction]
type = ParsedPostprocessor
pp_names = 'hbs_volume volume_domain'
expression = 'hbs_volume / volume_domain'
execute_on = TIMESTEP_END
[]
[pulverized_volume]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
execute_on = TIMESTEP_END
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
l_tol = 1e-5
start_time = 0.0
num_steps = 125
dt = 1
[]
[Outputs]
exodus = true
csv = true
[]
(test/tests/solid_mechanics/uo2_eigenstrains/ad_uo2_vswelling/total_swelling_rz.i)
#
# Test of combined swelling and densification (1000K)
#
# With a burnup of 0.05, the volume should be 1.0193, the delta
# due to the sum of the solid, gaseous, and densification portions
# of the swelling.
#
# This is easily checked with the 'volume' postprocessor value.
#
initial_fuel_density = 10430.0
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = patch_rz.e
[]
[]
[Variables]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.0
[]
[]
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
eigenstrain_names = 'volumetric_swelling'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
density_name = 'reg_density'
[]
[]
[Functions]
[burnupFunc]
type = PiecewiseLinear
x = '0 1'
y = '0 0.05'
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnupFunc
execute_on = timestep_begin
[]
[solid_swell]
type = ADMaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[gas_swell]
type = ADMaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[densification]
type = ADMaterialRealAux
variable = densification
property = densification
execute_on = timestep_end
[]
[volumetric_strain]
type = ADRankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[]
[left_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 1000.0
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 2
value = 1000.0
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 1.0
poissons_ratio = 0.3
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = 1
temperature = temp
burnup = burnup
complete_burnup = 5
total_densification = 0.01
eigenstrain_name = volumetric_swelling
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1000.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = 1
[]
[thermal]
type = UO2Thermal
block = 1
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup = burnup
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = ${initial_fuel_density}
[]
[converter]
type = MaterialADConverter
ad_props_in = 'density'
reg_props_out = 'reg_density'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 0.1
num_steps = 10
[]
[Postprocessors]
[volume]
type = VolumePostprocessor
use_displaced_mesh = true
execute_on = 'initial timestep_end'
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
[]
[densification]
type = ElementAverageValue
variable = densification
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/cracking/TSQ002_cracking.i)
initial_fuel_density = 10431
[GlobalParams]
density = ${initial_fuel_density} #95% of TD (TD assumed to be 10980)
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = tsq002_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.0
[]
[]
[AuxVariables]
[grain_radius]
block = pellet_type_1
initial_condition = 8.7945e-6 # ((11.6+11.2+11.2+11.1)/4)/2*1.56
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = TSQ002_alhr.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = TSQ002_alhr_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 141798626 141802226' # -100 @ 101326 Pa, 0 to 141798626 @ 15.517 MPa, 141802226 @ 101326 Pa
y = '.00653 1 1 .00653'
[]
[flux]
type = PiecewiseLinear
data_file = TSQ002_fast_flux.csv
format = columns
[]
[clad_wall_temp]
type = PiecewiseLinear
data_file = TSQ002_clad_temp.csv
format = columns
[]
[axial_clad_peaking]
type = PiecewiseBilinear
data_file = TSQ002_clad_peaking.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_bc]
type = CompositeFunction
functions = 'clad_wall_temp axial_clad_peaking'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
a_lower = 0.00324
a_upper = 3.81705
fuel_outer_radius = 0.0041275
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0348 0.9652 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet_type_1
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
penalty = 1e9
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
secondary = 10
initial_moles = initial_moles
primary = 5
gas_released = fission_gas_released
variable = temp
tangential_tolerance = 1e-6
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temp
boundary = '1 2 3'
function = clad_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.517e6
function = pressure_ramp
displacements = 'disp_x disp_y'
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.62e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet_type_1
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = 'power_law_softening'
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
prescribed_crack_directions = 'x y z'
output_properties = crack_damage
outputs = exodus
[]
[power_law_softening]
type = PowerLawSoftening
stiffness_reduction = 0.3333
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 8.7945e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.008255
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =0.0001778 #diameteral gap
relocation_activation1 = 5000
burnup_relocation_stop = 0.024
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
initial_porosity = 0.05
burnup = burnup
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 20.0
variable = temp
[]
[jacobian]
type = ElementJacobianDamper
max_increment = 0.1
min_damping = 0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 141802226 #141798626+3600
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
iteration_window = 2
optimal_iterations = 10
linear_iteration_ratio = 100
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.81381 # rod height
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet_type_1
[]
[FCT]
type = NodalVariableValue
nodeid = 30330 #coords (0.0, 2.10133)
variable = temp
execute_on = 'initial timestep_end'
[]
[FCT_slice4]
type = NodalVariableValue
nodeid = 37085 #coords (0.0, 1.71896)
variable = temp
execute_on = 'initial timestep_end'
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = pellet_type_1
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
## Nodal comparison values
[gap_slice6]
type = NodalVariableValue
variable = penetration
nodeid = 23579 #coords (0.0041275, 2.48172)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 30299 #coords (0.0041275, 2.10133)
[]
[gap_slice4]
type = NodalVariableValue
variable = penetration
nodeid = 37054 #coords (0.0041275, 1.71896)
[]
[contact_pressure_slice6]
type = NodalVariableValue
variable = contact_pressure
nodeid = 23579 #coords (0.0041275, 2.48172)
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 30299 #coords (0.0041275, 2.10133)
[]
[contact_pressure_slice4]
type = NodalVariableValue
variable = contact_pressure
nodeid = 37054 #coords (0.0041275, 1.71896)
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet_type_1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage FCT rod_total_power'
execute_on = 'FINAL'
[]
[]