- temperatureCoupled temperature
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature
UO2Sifgrs
Recommended fission gas model to account for generation of fission gasses in nuclear fuel
Description
The processes induced by the generation of the fission gases xenon and krypton in nuclear fuel have a strong impact on the thermo-mechanical performance of the fuel rods. On the one hand, the fission gases tend to precipitate into bubbles resulting in fuel swelling, which promotes pellet-cladding gap closure and the ensuing pellet-cladding mechanical interaction (PCMI). On the other hand, fission gas release (FGR) to the fuel rod free volume causes pressure build-up and thermal conductivity degradation of the rod filling gas.
The fundamental physical processes, which control the kinetics of fission gas swelling and release in irradiated fuel, may be summarized as follows; fission gas atoms generated in the fuel grains diffuse towards the grain boundaries through repeated trapping in and irradiation-induced resolution from nanometre-size intra-granular gas bubbles. Although a part of the gas atoms that reach the grain boundaries is dissolved back to the grain interior by irradiation, the majority of the gas diffuses into grain-face gas bubbles, giving rise to grain-face swelling. Bubble growth brings about bubble coalescence and inter-connection, eventually leading to the formation of a tunnel network through which a fraction of the gas is released to the fuel rod free volume.
In BISON, fission gas behavior is computed for each integration point in the fuel finite element mesh. The gas produced at each integration point is computed by a numerical time integration of the gas production rate, given as the product of the fission rate and fractional yield of gas atoms per fission.
Physics-Based Model
The Simple Integrated Fission Gas Release and Swelling (Sifgrs) model is intended for consistently evaluating the kinetics of both fission gas swelling and release in UO. The model incorporates the fundamental features of fission gas behavior, among which are gas diffusion and precipitation in grains, growth and coalescence of gas bubbles at grain faces, thermal, athermal, steady-state, and transient gas release. Through a direct description of the grain-face gas bubble development, the fission gas swelling and release are calculated as inherently coupled processes, on a physical basis. The level of complexity of the model is consistent with reasonable computational cost and the uncertainties inherent in engineering-scale fuel analysis. The Sifgrs model draws on and extends the approach described in Pastore et al. (2013).
Intra-granular Gas Behavior
Fission gas transport from within the fuel grains to the grain faces is computed through numerical solution of the relevant diffusion equation in one-dimensional spherical geometry (1) where (m) is the intra-granular gas concentration, (s) the time, (ms) the effective gas diffusion coefficient, (m) the radial co-ordinate in the spherical grain, and (ms) the gas generation rate. The effective diffusion coefficient, which accounts for the effects of repeated trapping in and irradiation-induced resolution from intra-granular bubbles, is calculated based on White and Tucker (1983) and Speight (1969). Eq. (1) is solved using dedicated numerical algorithms. Both the algorithm from Hermansonn and Massih (2002) and the more recent one from Pizzocri et al. (2016) are available in BISON.
In alternative to the single diffusion equation with the effective diffusion coefficient , it is possible to solve the coupled equations describing gas diffusion and exchange of gas between the grain matrix and bubbles (2)
(3) where and (m) are the single gas atom concentration and the gas in bubble concentration, respectively, (ms) the single atom diffusion coefficient, (s) the trapping rate, and (s) the re-solution rate. This system of equations is solved in time-varying conditions by a dedicated algorithm, extending the one from Pizzocri et al. (2016). The solution of this system of equations is expected to be needed during fast transients (e.g., RIA). Nevertheless, Eq. (1) provides a good description of the intra-granular gas behavior for the wide majority of temperature and power conditions.
An empirical model (Lassmann et al., 1995) is included to consider intra-granular gas depletion in the high burnup structure (HBS). No specific model for gas release from the HBS is considered.
Evolution of Intra-granular Bubbles
The contribution of intra-granular bubbles to fission gas swelling (intra-granular swelling) is generally less important than the swelling due to grain-face bubbles in normal operation conditions, while at burnup above about 45 GWd/t (Kashibe et al., 1969) and/or in fast temperature transients (White et al., 2006) can constitute a significant portion of the fuel gaseous swelling. In the framework of Sifgrs, a model featuring a mechanistic description of the evolution of the nanometric-sized intra-granular bubbles and the so-called dislocation bubbles, the latter being those heavily contributing to fuel swelling in certain conditions, is available. The model for small intra-granular bubbles is drawn on Pizzocri et al. (2018), while his extension to consider dislocation bubbles is taken from Barani et al. (2018).
Nucleation and re-solution may occur by different mechanisms, i.e., heterogeneous and homogeneous (Olander and Wongsawaeng, 2006). Heterogeneous nucleation and re-solution refer to the creation of new bubbles nuclei as a direct consequence of the interaction of fission fragments with the lattice and the bubbles destruction occurring en-bloc by passing fission fragments, respectively. The homogeneous mechanisms accounts for the nucleation of bubbles by diffusion-driven interactions of dissolved gas atoms and re-solution occurring gradually by ejection of individual atoms. The dominant mechanisms depend upon the nature of the interactions between fission fragments and lattice (electronic or phononic). Based on experimental and theoretical findings, the heterogeneous mechanisms is assumed as dominating in UO. The classical model traces back to the work of Turnbull (1971) as reported by White and Tucker (1983). This model assumes complete destruction of intragranular bubbles after the interaction with a fission fragment, and the re-solution rate is calculated accordingly as
(4)
Veshchunov and Tarasov (2013) proposed a mechanistic model accounting for the non-linear reduced effectiveness of bubble re-solution as the bubble radius increases. The resolution rate is defined as
(5)
with critical distance from the pore surface within which atom re-solution occurs and thickness of the re-solution layer around the pore. Lösönen (2017) then added additional modifications, reading
(6)
Lastly, Setyawan et al. (2018) reviewed previous on irradiation-induced re-solution and, based on molecular dynamics analysis, proposed the following re-solution parameter, also accounting for a size-dependent re-solution
(7)
A portion of the intra-granular bubbles is pinned to dislocation lines, which are postulated to be responsible for the coarsening (i.e., the abrupt growth) of the pinned intra-granular bubbles in temperature transients. In addition to the above mentioned mechanisms governing the small intra-granular bubbles, the evolution of the "dislocation" intra-granular bubbles is governed by an additional trapping of gas along dislocation lines, and eventually precipitating into such bubbles. The additional absorption of fission gas atoms may trigger the mentioned bubble coarsening, thanks to the availability of vacancies in the nearby of the dislocation core (differently from the bulk of the grain, where the so-called "vacancy starvation" is preventing the small intra-granular bubbles to grow). A sketch of the mechanisms acting on dislocation bubbles is represented in Figure 1.

Figure 1: Sketch of the trapping and re-solution mechanisms acting on a dislocation bubble (in orange). In green are represented the fission gas single gas atoms.
The equations for the evolution of the two populations of the intra-granular gas bubbles, in terms of bubble number density and gas atom concentrations are: (8) where and (m) are the number density of small and dislocation intra-granular bubbles, and is the number of gas atoms per small and dislocation bubbles, , , and (m) are the intra-granular gas concentration in the matrix, in the small and dislocation bubbles, respectively, (s) the time, (ms) the single-atom gas diffusion coefficient, (ms) the gas generation rate, and (s) the (reduced) trapping rate into small and dislocation bubbles, (s) is the (reduced) trapping rate along dislocation lines and then into dislocation bubbles, and (s) the (reduced) re-solution rate from small and dislocation bubbles, and () the nucleation rate, which is calculated as: (9) being (bubble/fission-fragment) the average number of bubbles nucleated per fission fragments (e.g., Turnbull (1971)) and the fission rate. Eventually, (bubbles/m) is the nucleation rate of bubbles on dislocations, and () is the dislocation density.
Small intra-granular bubbles radius is calculated, assuming spherical shape of the bubbles, multiplying the number of atoms per intra-granular bubble, i.e. , by the equivalent radius associated to atoms in intra-granular bubbles (derived from experimental measurements, (e.g. Olander and Wongsawaeng (2006)).
As for dislocation bubbles, when they meet the critical condition for coarsening, i.e., when the internal energy exceeds the surface energy of the bubbles, vacancies absorption is triggered, causing the coarsening of this bubble population. The absorption of vacancies is modeled as the result of a two-steps process entailing the precipitation from the bulk and the subsequent absorption, reading
where (Jm) is the UO gas specific surface energy, (m) is the dislocation bubble radius, (Pa) is the hydrostatic stress, (J/K) is the Boltzmann constant, () is the vacancy volume, (dimensionless) is the number of vacancies per dislocation bubble, and are the vacancy diffusion coefficients in the bulk and along dislocations, respectively, and (m) is the radius of the equivalent Wigner-Seitz cell associated to one dislocation bubble.
Moreover, interconnection between dislocation bubbles is accounted for, considering the nearest-neighbor distribution function for mono-disperse hard spheres as proposed by Torquato (2013), reading:
where is the nearest-neighbor distribution function, and are the dislocation bubbles volume (m) and porosity (dimensionless), i.e., the swelling, defined as
Finally, the radius of the dislocation bubbles is evaluated considering spherical bubbles as
Grain-face Gas Behavior
Numerical solution of Eq. (1) allows estimating the arrival rate of gas at the grain faces, thus providing the source term for the grain-face gas behavior module. The latter computes both the fission gas swelling and release through a direct description of the grain-face bubble development, including bubble growth and coalescence (which are reflected in fuel swelling), and eventual inter-connection (leading to thermal FGR). In outline:
Peculiarities related to the presence of grain edges (where three grains meet) are neglected (e.g., Kogai (1997) and Massih and Forsberg (2008)).
The flux of gas atoms dissolved from the grain faces back to the grain interior by irradiation is neglected (Rest, 2003).
An initial number density of grain-face bubbles (nucleation centers) is considered, and further nucleation during the irradiation is neglected (one-off nucleation, e.g., White (2004)).
The absorption rate of gas at the grain-face bubbles is assumed to equal the arrival rate of gas at the grain faces (White, 2004; Olander and Uffelen, 2001).
All grain-face bubbles are considered to have, at any instant, equal size and equal lenticular shape of circular projection (e.g., Veshchunov (2008)); hence, the fractional volume grain-face fission gas swelling is given by
(10) where is the number density of grain-face bubbles per unit surface, the grain radius, the bubble semi-dihedral angle, the geometric factor relating the volume of a lenticular-shape bubble to that of a sphere, which is , and the bubble radius of curvature. The factor 1/2 is introduced in Eq. (10) because a grain-face bubble is shared by two neighboring grains.
When using grain size from experimental data, special care must be taken in ensuring the true grain radius is calculated. See GrainRadiusStandardfor more information.
Bubble Growth
Bubble growth is treated using the model from Speight and Beere (1975), which describes the growth (or shrinkage) of grain-face bubbles as proceeding by absorption (or emission) of vacancies in grain boundaries, induced by the difference between the pressure of the gas in the bubble, (Pa), and the mechanical equilibrium pressure, (Pa). The vacancy absorption/emission rate at a bubble is given by
(11) where (dimensionless) is the number of vacancies in the bubble, (m s) the vacancy diffusion coefficient in grain boundaries, (m) the thickness of the diffusion layer in grain boundaries, and the parameter (dimensionless) may be calculated as (White, 2004) with being the fraction of grain faces covered by bubbles (fractional coverage). The mechanical equilibrium pressure, , of the gas in a lenticular bubble of circular projection is given by (12) where (Jm) is the gas specific surface energy, (m) the bubble radius of curvature, and (Pa) the hydrostatic stress (considered to be negative if the solid medium is under compression). For describing the bubble thermodynamic state, the Van der Waals' equation of state is adopted in the following form: (13) where (dimensionless) is the number of fission gas atoms per bubble, (JK) the Boltzmann constant, (K) the temperature, (m) the bubble volume, and (m) the Van der Waals' volume of a fission gas atom. Given that each bubble consists of vacancies and gas atoms, the volume of a bubble comprising fission gas atoms and vacancies is given by (14) where (m) is the atomic (vacancy) volume in the bubble. The combination of Eq. (13) and Eq. (14) gives for the pressure of the gas in the bubble (15) The above approach allows computing the bubble growth rate from the rate of inflow of gas atoms along with the rate of absorption (emission) of vacancies at the bubble. The combined effects of gas atom inflow and vacancy absorption (emission) are interactive, since the addition of fission gas atoms gives rise to a change in the bubble pressure via Eq. (15). The bubble pressure affects the propensity of the bubble to absorb (or emit) vacancies through Eq. (11). Given the volume, , of a lenticular bubble of circular projection, the bubble radius of curvature is calculated as
Lower-Length-Scale-Infomed Equation of State (eos_option==YANG)
An equation of state for fission gas has been derived from molecular dynamics simulations by Yang and Wirth (2022). This provides an improved description of bubble pressure as a function of temperature, the number of gas atoms in the bubble, and the number of vacancies that make up the free space (volume) of the bubble. In particular, the model improves the decription of pressure in the high pressure regime, and has been validated up to a gas density of atoms/m. This model can be selected using eos_option = YANG; otherwise, the definition of pressure described above is used by default. In the model of Yang and Wirth, the number density of gas, , is given by where the bubble volume is . The bubble pressure is given by (16) where and m, while , and are temperature-dependent coefficients defined as such where and K. The parameters , , and are listed in Table 1. Additional parameters relating to the containment of nm-sized bubble in UO have been not been included in this implementation, as the impact is negligible for the large bubles that form on grain boundaries.
Table 1: Model parameters from Yang and Wirth (2022).
| Parameter | Value (unitless) |
|---|---|
| 0.261323 | |
| −1.132763 | |
| 0.028564 | |
| 0.318315 | |
| -0.038613 | |
| −0.248067 | |
| −0.003885 | |
| 0.069736 | |
| 0.018356 |
The derivative of pressure with respect to volume is given by
Additional Bubble Growth though Vacancies Assisting Gas Diffusion (vacancies_assisting_gas_diffusion_option==COOPER2024)
The default version of the model assumes that gas atoms arrive at bubbles as interstitial defects. However, it has been determined from lower-length-scale simulations that fission gas diffusion can be assisted by vacancies. Following the results of Matthews et al. (2020), for fission rates typically experienced in-reactor, there is a transition from high temperatures, where diffusion is assisted by two vacancies per gas atom (), to intermediate temperatures, where diffusion is assisted by four vacancies (). At low temperatures (below around 1000 K), gas interstitials dominate diffusion (), meaning that no vacancies assist diffusion. Therefore, one can account for the number of vacancies that arrive at intergranular bubbles by accompanying and assisting gas atom transport, as such: where is the number of vacancies that assist the diffusion of a single gas atom at a given temperature. Accounting for the three possible dominant diffusion mechanisms in UO, The denomenator accounts for the arrival rate of gas atoms due to each mechanism, while the numerator accounts for the corresponding number of vacancies. values are fitted, as a function of temperature, to the diffusivity data from the Centipede model from Matthews et al. (2020), which describes gas diffusivity due separate defects. For gas interstitials, their further incorporation into bubbles becomes unfavorable as the bubbles become highly pressurized. This is accounted for by the Y term based on the energy, , to incorporate a gas interstitial defect into a bubble, as such, The above equation is dependent on the number of gas atoms in the bubble per the number of vacancies in the bubble, following the parameterization of Cooper et al. (2024). This model can be activated using vacancies_assisting_gas_diffusion_option==COOPER2024.
Grain-Face Bubble Coalescence
As intergranular bubbles grow and cover a larger area of the grain boundary surface, they start to interact and coalesce and form fewer, larger bubbles. Sifgrs offers two different models to describe this phenomena. The first is from White (2004). Assuming that bubbles are distributed regularly on a square lattice and have a circular projection on the grain surfaces, White determines the number of bubble interactions as a function of bubble growth. The decrease in intergranular bubble number surface density as a result of coalescence is defined as (17) where is the projected area of the lenticular grain face bubbles and denotes the change in as a result of bubble growth. Once integrated, it leads to (18) where and are the initial and values. This model corresponds to the option intergranular_bubble_coalescence_option=WHITE2004 and is used by default.
Pastore et al. (2013) later proposed an update version of this model. The updated model accounts for the fact that the average bubble volume increases while decreases during coalescence to conserve the total bubble volume per unit surface . The decrease in intergranular bubble number surface density as a result of coalescence is defined as (19) This model corresponds to the option intergranular_bubble_coalescence_option=PASTORE2013.
In both cases, a lower limit of m is set for .
Bubble Number Density Saturation Condition
The release of fission gas to the fuel rod free volume following inter-connection of grain-face bubbles and consequent formation of pathways for gas venting to the fuel exterior (thermal release) is modeled based on a principle of grain face saturation. More specifically, a saturation coverage concept is adopted, namely, it is considered that once the fractional coverage, , attains a saturation value, , the bubble number density and projected area obey the saturation coverage condition (20) where is the bubble number density and is the bubble projected area on the grain face. The commonly accepted value for is 0.5. Eq. (20) implies that, after attainment of the saturation coverage, a fraction of the gas reaching the grain faces is released to the fuel exterior to compensate for continuing bubble growth.
Transient Gas Behavior
There are two approaches available for the calculation of transient gas behavior. The transient_option parameter allows for the selection of which model is used. Selecting transient_option==NO_TRANSIENT skips all calculations of transient fission gas release. The microcracking model developed by Pastore et al. is used for transient_option==MICROCRACKING_BURNUP and transient_option==MICROCRACKING (Pastore et al., 2014). Note that the option transient_option==MICROCRACKING_BURNUP differs from transient_option==MICROCRACKING in that it accounts for the burnup effect on the temperature for burst release. The empirical model developed by Capps et al. is used for transient_option==EMPIRICAL_CAPPS (Capps et al., 2023).
Microcracking model (transient_option==MICROCRACKING_BURNUP or transient_option==MICROCRACKING)
Experimental observations relative to both in-reactor irradiation and post-irradiation annealing of oxide nuclear fuel indicate that substantial fission gas release can occur on a small time scale during temperature transients (burst release). The rapid kinetics of the process cannot be interpreted as purely diffusion-controlled. From the available experimental evidence (Rothwell, 1962; Une and Kashibe, 1990; Sartori et al., ; Ducros et al., 2013), the following main aspects of transient fission gas behavior emerge:
Burst release occurs through grain-face separation (micro-cracking) which entails gas depletion of a fraction of the grain faces.
Release bursts are triggered by temperature variations, both heating and cooling.
The rate of gas release during bursts is a peaked function of temperature with the maximum at a 'central' temperature, which is dependent on the burnup.
An extension (transient model) of the treatment of grain-face gas behavior described in the section "Grain-face gas behavior" is available in BISON, which introduces the effect of micro-cracking on fission gas behavior (Pastore et al., 2014). According to the BISON transient model, gas depletion of a fraction of the grain faces is modeled as a reduction of the fractional coverage, . In particular, is scaled by a factor, , corresponding to the fraction of non-cracked (intact) grain faces. The reduction of the fractional coverage effectively leads to a decrease of the amount of gas retained in the fuel – consequently, of fission gas swelling – and to a corresponding increase of FGR. This contribution to thermal FGR supplements the diffusion-interconnection mechanism considered in the basic model (See section "Grain-face gas behavior"). Also, the lost gas storing capacity of cracked grain faces is represented by scaling the saturation coverage, , by the factor f. Moreover, the healing process of cracked grain faces is considered as a progressive restoration of the grain-face gas storing capacity. Therefore, the fractional coverage and saturation coverage obey
where stands for diffusion-controlled processes (basic model in the section "Grain face gas behavior"), stands for micro-cracking, and for micro-crack healing. The value for the maximum (initial) saturation coverage (corresponding to all intact grain faces) is . The calculation of the term representing the effects of micro-cracking is detailed hereinafter.
We simplify the micro-cracking process into a purely temperature-dependent behavior, characterized by a micro-cracking parameter, . We also observe that the process can only affect intact grain faces, and write (21) where is the reduction rate due to micro-cracking of the fraction of intact grain faces, . The micro-cracking parameter is taken as a function of the sole temperature, hence (22) Then, Eq. (21) can be written as implying which conforms to the experimentally observed characteristic of burst release as triggered by temperature variations. Under the condition expressed by Eq. (22), the analytic solution of Eq. (21) with initial conditions and is Based on the available experimental evidence, the functional form of is chosen as a temperature-dependent sigmoid function (23) where (K) is the central temperature, (K) is a measure of the temperature-domain width of the phenomenon, (dimensionless) is a parameter, and is defined as so that increases during both heating and cooling transients. The following values are used for the parameters: = 5 K, = 33. The micro-cracking parameter, , and the parameter derivative, , are plotted in Figure 2 for a value of K. According to Eq. (23) the absolute value of the temperature derivative for is maximum at (see also Figure 2), thus the combined Eq. (21) and Eq. (23) reproduce the maximum rate of burst release at as temperature varies in time.
For the calculation of the parameter in the model, the following correlation from Barani et al. (2017) is used (24) where K, K, GWdt, and (GWdt) is the burnup at current time step. Eq. (24) is derived from the best-estimate fit of quantitative experimental data, Figure 3.

Figure 2: Micro-cracking parameter, , and derivative, , as a function of temperature, considering a central temperature equal to 1773 K.

Figure 3: Experimental data for the temperature of maximum burst release rate from Une and Kashibe (1990) and Baker and Killeen (1987) as a function of burnup and best-estimate fitting curve.
A simple burnup-dependent model is used for micro-crack healing, which is not described here for brevity. Details can be found in Pastore et al. (2014). The above treatment of transient fission gas behavior preserves the continuity in both time and space as well as the consistent coupling of the calculated fission gas release and swelling. Extensive validation has indicated that the model is capable of consistently representing the kinetics of FGR during transient fuel irradiations (Pastore et al., 2014; Pizzocri et al., 2015; Barani et al., 2017).
Empirical transient model (transient_option==EMPIRICAL_CAPPS)
The empirical transient model is a function of local burnup and temperature. Details of the development of the model and the fitting process can be found in Capps et al. (2023). Note, however, that the expression and parameter values do not exactly match the model described in Capps et al. (2023) to represent recent updates to the model.
The equation for transient fission gas release can be written as a function of burnup and temperature : (25) where FGR is the percent of fission gas release. The constants associated with the model are included in Table 2.
Table 2: Model parameters values for tFGR model from Capps et al. (2023).
| Parameter | Value | Units |
|---|---|---|
| 65.320 | ||
| 0.03552 | (dimensionless) | |
| 1827.0 | ||
| 0.4077 | ||
| 0.2010 | (dimensionless) | |
| 928.90 | ||
| 20.650 | ||
| 0.2230 | (dimensionless) |
Athermal Gas Release
At low temperature, the fission gas in the matrix of the solid is relatively immobile. Only the gas formed at the external surface of the solid is capable of escape, with an emission rate that is independent of temperature. This athermal contribution to FGR arises from the surface-fission release mechanisms of recoil (direct release of a fission fragment due to its high kinetic energy) and knockout (ejection of a gas atom following elastic interaction with either a primary fragment or energetic particle created in a collision cascade) (Lewis, 1987). These release mechanisms affect only the outer layer of the fuel (within about from the surface). The rate of gas atom release per unit fuel volume due to recoil and knock-out, (ms), may be calculated as (Lewis, 1987) where (dimensionless) is the fractional yield of fission gas atoms, the fission rate density (ms), (m) the volume of fuel, (m) the geometrical surface area of fuel, (m) the total surface area of fuel (including cracked surface), (m) the fission fragment range in the fuel, and (m) the range of the higher order uranium knock-on in UO.
In line with Koo et al. (2000), the number and length of cracks in each fuel pellet is estimated in a simple way. First, radial cracks are considered to cross the outer, brittle region of the fuel pellet with a temperature lower than 1200 C (Olander, 1976). Second, the number of pellet cracks is considered to increase linearly with fuel linear power (Oguma, 1983). Then, once the linear power and pellet dimensions are given, the total pellet surface area available for athermal gas release can be calculated.
Grain Growth and Grain Boundary Sweeping
Being the fission gas behavior physically dependent on the granular structure of the fuel, the Sifgrs model is coupled with the grain growth model (See section on Grain Growth in the Theory Manual Overview of Ceramic Fuels). The grain growth phenomenon affects the fission gas release in three ways. First of all, due to the low solubility of the fission gas, the moving grain boundary does not redeposit any gas in the newly-formed crystal behind it, thus acting as a filter and contributing to the collection of gas at the grain faces (_grain boundary sweeping_). This effect is taken into account in Sifgrs by adding a supplementary fractional release term () from within the grains to the grain faces that is equal to the volume fraction of the fuel swept by the moving boundaries: where the indices and refer to the previous and current time, respectively. Secondly, the diffusion distance for the fission gas atoms created in the grains increases as the grains grow. Unlike the first consequence this tends to reduce the release rate. Thirdly, grain growth reduces the capacity of the grain boundaries to store fission gas, as it results in a decrease of the total grain surface-to-volume ratio.
Extension to high burnup behavior
Specific models have been implemented to describe fission gas behavior at high burnup during important microstructural changes. These developments are described in Simon et al. (2023) and Simon et al. (2024).
Modeling of high burnup structure (HBS) formation
Although several models exist in the literature, BISON currently offers two HBS formation models, which can be used in parallel with Sifgrs using the HighBurnupStructureFormation object. The first one is an empirical description from Lassmann et al. (1995). Barani et al. (2020) later proposed a more descriptive model for HBS formation. See HighBurnupStructureFormation for additional information.
A two-phase model for the non-restructured region and HBS
As in Barani et al. (2020), the fuel is modeled as a two-phase system, with the fuel being part non-restructured (NR) and part HBS. Fission gas concentration is therefore shared between the two phases, with where (mol/m) is the local fission gas concentration, (mol/m) is the local fission gas concentration in the NR phase, and (mol/m) is the local fission gas concentration in the HBS phase. is the local fraction of HBS provided by HighBurnupStructureFormation. Moreover, the grain size, bubble populations, dislocation density, and other microstructure parameters of each phase are tracked for each phase and for the complete fuel. This approach is similar to what is implemented in SCIANTIX (Barani et al., 2020) and MARGARET (Noirot, 2011).
Note that the same description is consistently used in BISON with Lassmann's model. However, as the local HBS volume fraction is either 0 or 1, the two-phase description is greatly simplified.
Modeling of fission gas generation
The amount of fission gas generated is shared between the NR and HBS regions as and
Modeling of fission gas transition from the NR region to HBS
It has been observed experimentally that the gas within the matrix (intragranular gas) is gradually depleted as the HBS forms (Lassmann et al., 1995). This depletion has been fit empirically with an exponential function that is valid when the current burnup is greater than a threshold burnup . Lassmann et al. describe it as (26) where is the Xe concentration in the matrix, is the Xe production rate, and (MWd/kgU) is a constant fit to data. Once and depletion of the intragranular gas begins, it is assumed that the intragranular gas is transferred to the large intergranular bubbles normally observed in the HBS region at a rate proportional to concentration, following (27) (28) where is the concentration throughout the fuel of Xe that is contained in HBS bubbles (to be distinguished from the concentration of Xe in each bubble, which is significantly higher). This expression for rate of transfer, combined with the source term for production of new Xe atoms, can be integrated to obtain Eq. (26).
Another model available corresponds to an adaptation of the model from Barani et al. (2020). As the fuel transitions to HBS, significant microstructural changes happen. These transformations result in significant changes in the location of fission gases. As HBS forms during irradiation, fission gases are swept from the NR region. As the HBS volume fraction increases by , the amount of fission gas swept from the NR region corresponds to (29) The denominator corresponds to the volume fraction of NR fuel. In this model, we assume that the generation of fission products has already been accounted for, so mass conservation imposes that the amount of fission gas swept from the NR fuel equals the amount of fission gas added to the HBS phase. As such, (30)
As HBS formation happens, the amount of fission gases in the NR matrix decreases. As all the fuel becomes covered by HBS, all the fission gases are located in the HBS phase.
Intragranular fission gas modeling in HBS
As a first approximation, the intragranular fission gas behavior in HBS fuel is greatly simplified. HBS grains are assumed to have a constant radius of 150 nm (Barani et al., 2020), and intragranular fission gases are assumed to diffuse toward grain boundaries. The presence of intragranular bubbles and dislocations, which can affect fission gas transport in NR fuel, are neglected. This assumption, however, is reasonable as a first approximation. HBS formation has been observed to reduce the density of dislocations, and the HBS microstructure is dominated by large intergranular bubbles rather than intragranular ones. Moreover, the purely diffusional description of intragranular fission gas behavior is widely used in fuel performance codes (Barani et al., 2020). In the current report, we use the same diffusion coefficient as proposed in Barani et al. (2020), which originates from an empirical study (Brémier and Walker, 2002). The diffusion of gas atoms in intragranular HBS is therefore defined as (31) where the fission rate in ms, leading to being defined in m/s. Fission gases are now shared between HBS matrix and bubbles. The amount of fission gases in the HBS matrix now reaches a non-zero value, which depends on HBS grain size and HBS intragranular diffusivity. This model will be validated in future work. In particular, it will be compared to the experimental data published in Lassmann et al. (1995).
Note that when Lassmann's model of HBS formation is used, the sweeping of fission gases from the intragranular matrix to HBS bubbles already accounts for intragranular diffusion in the HBS region (Lassmann et al., 1995). As such, no further intragranular model is needed.
Intergranular fission gas modeling in HBS
In addition to the intragranular gas described above, the transfer of intergranular gas to the larger, spherical bubbles found in the HBS region must be accounted for. Moreover, it is assumed that gas is transferred from the intergranular bubbles to the HBS bubbles at the same rate as rate of formation of the HBS itself. Taking the derivative of the equation of high burnup structure volume fraction from HighBurnupStructureFormation with respect to burnup gives: (32) Thus, the rate of change of grain boundary bubble density, , is given by (33)
Having determined how much gas is transferred to the HBS bubbles, we now must determine their pressure and size evolution. It is assumed that initial number density of HBS bubbles is m (Barani et al., 2019), and their initial radius is set to 0 m. Note that gas bubbles in the HBS region are assumed to be spherical, in contrast to the lenticular intergranular (grain boundary) bubbles that are normally observed in UO fuel prior to HBS formation. The density of gas in each bubble, , is calculated by where is the bubble volume. Now having determined the concentration of gas in each bubble, we can determine the bubble pressure using the equation of state of our choice.
To evolve the bubble radius as a function of time, an approach similar to that used for the evolution of intragranular bubbles in USi (Barani et al., 2019; Barani et al., 2022) was employed. The growth of the bubbles is assumed to be controlled by vacancy flux, driven by overpressurization of the HBS bubbles. Given this, the rate of change of bubble volume is given by (34) where m is the volume of a U lattice site in UO Kogai (1997), and is the number of vacancies per intragranular bubble. For overpressured bubbles, the vacancy flux is given by Barani et al. (2019) and Barani et al. (2022): (35) where is the intragranular vacancy diffusion coefficient, is the radius of the equivalent Wigner-Seitz cell surrounding a bubble, and is a dimensionless factor defined as: (36) where . is the equilibrium pressure for a bubble of radius , as calculated using the Laplace-Young equation (37) where J/m (Hall et al., 1987; Kogai, 1997) is the surface tension of the bubble-matrix interface, and is the hydrostatic stress, considered to be negative for a solid in compression. Since the bubbles are expected to be overpressurized shortly after formation, Sifgrs enforces to prevent transient bubble shrinking during the brief initial stage after bubble formation.
Another HBS bubble evolution model is available in UO2Sifgrs. This model builds on the HBS formation model of the previous approach, as well as its fission gas transition model, and its intragranular model (Simon et al., 2023; Simon et al., 2024). However, the HBS intergranular was revisited to more accurately capture grain boundaries (GBs) diffusion and HBS pore evolution. This approach is a mix between (1) a mechanistic description of HBS pore density to alleviate the previous assumption that the pore density remains constant and (2) an empirical model for HBS pore radius (Simon et al., 2024).
The pore density model is from a simplification of the model described in Barani et al. (2022). It states that
with the HBS pore number density in m, the gas concentration in HBS pores in mol/m, the gas single atom concentration HBS GBs in mol/m, the HBS pore nucleation rate in ms, the resolution rate in s, the trapping rate in s, and the rate at which gas atoms reach the HBS GBs from the grain bulk in mol/m/s and is derived from intragranular behavior. The HBS pore nucleation rate is defined as proportional to the local restructuring rate (Barani et al., 2022), meaning with MWdkgUms, the HBS volume fraction, and the effective burnup for HBS formation (Barani et al., 2020; Simon et al., 2023). For the derivative of the HBS volume fraction as a function of burnup, Sifgrs uses the version of the model from Simon et al. (2023), which has different model parameters from Barani et al. (2020) and Barani et al. (2022) to better match experimental data. See HighBurnupStructureFormation for additional information. Note that the value was updated from in the original paper to better match experimental data (Barani et al., 2020). The resolution rate is from a model proposed by Veshchunov and Tarasov (2013). It defines as (38) where (dimensionless), m is the critical distance from the pore surface within which atom resolution occurs, m is the thickness of the resolution layer around the pore, and the average HBS pore radius in m. The trapping rate model is originally from Gösele (1978). It states that (39) with the single atom diffusion coefficient in GBs, and (40) corresponding to the local porosity (dimensionless) assuming HBS pores are spherical. The HBS grain boundary (GB) diffusivity is not well characterized. However, Olander et al. have determined the GB diffusivity for NR fuel (Olander and Uffelen, 2001), and Barani et al. have proposed a corrective factor for high angle GBs in the HBS Barani et al. (2022). The diffusivity by Olander et al. is equal to (41) where is the temperature in Kelvin and is the ideal gas constant in J/K/mol. The HBS GBs diffusivity can then be obtained using (42)
As stated above, this approach uses an empirical model to capture the HBS local porosity and drive bubble growth. This model is from the stand alone fission gas behavior SCIANTIX. This model was provided by Davide Pizzocri from Politecnico di Milano in private communications and is available on SCIANTIX (see Pizzocri et al. (2020) and Zullo et al. (2023)). The same model was utilized as is, but the model parameter was updated. Based on data from Spino et al. (2006) and Cappia et al. (2016), the HBS local porosity is defined as with kgU/MWd. The pore radius can then be obtained using Eq. (40) assuming spherical pores.
After an increase in HBS pore density and radius, the number density can be reduced by pore interconnection (Barani et al., 2020). The pore number density is adjusted as where is a correction factor limiting the interconnection rate when high local porosity is achieved and accounting for the non-superposition of hard spheres (Barani et al., 2022). Bubble interconnection also affects the pore radius to ensure that interconnection does not affect the overall pore volume.
While the original model described in Simon et al. (2023) assumed a constant pore density and used a mechanistic model for pore radius evolution, the new model described above utilizes a mechanistic description of the pore density evolution and an empirical model for porosity and radius calculations Simon et al. (2024).
Preliminary application to FBR MOX
For fast MOX fuels, higher temperatures are reached compared to LWR fuels. The associated pronounced bubble growth and coalescence can lead to the attainment of the lower limit for the number density of grain boundary bubbles systematically. Preliminary simulations of FBR MOX irradiations have indicated that a value of leads to a more accurate result in terms of both FGR and swelling compared to the default LWR UO value. A value of is compatible with experimental observations, e.g., White (2004).
Example Input Syntax
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[fission_gas_release]
type = UO2Sifgrs<<<{"description": "Recommended fission gas model to account for generation of fission gasses in nuclear fuel", "href": "UO2Sifgrs.html"}>>>
temperature<<<{"description": "Coupled temperature"}>>> = temp
fission_rate<<<{"description": "Coupled fission rate variable (fiss/m^3/s)"}>>> = fission_rate
[]
[](test/tests/element_integral_power/fission_gas_sifgrs_1D.i)Input Parameters
- atomic_covolume8.47705e-29Van der Waals covolume for Xe (m^3/atm)
Default:8.47705e-29
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Van der Waals covolume for Xe (m^3/atm)
- axial_power_profileAxial power peaking function.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Axial power peaking function.
- 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
- bubble_gb_limit1e+10grain-boundary bubble number density limit (bbl/m**2)
Default:1e+10
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:grain-boundary bubble number density limit (bbl/m**2)
- burnupCoupled burnup
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled burnup
- burnup_functionBurnup function
C++ Type:BurnupFunctionName
Unit:(no unit assumed)
Controllable:No
Description:Burnup function
- 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
- cr_doped_optionBEST_ESTIMATE_1773Select Cr-doped option when doping_type = CR2O3_DOPED
Default:BEST_ESTIMATE_1773
C++ Type:MooseEnum
Options:CORRECTION, TRANSITION_TEMPERATURE_1525, TRANSITION_TEMPERATURE_1800, TRANSITION_TEMPERATURE_1673, REFINED_1673, BEST_ESTIMATE_1773, UPPER_LIMIT_1773
Controllable:No
Description:Select Cr-doped option when doping_type = CR2O3_DOPED
- 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.
- diff_coeff_optionTURNBULL_D1_D2Select diffusion coefficient
Default:TURNBULL_D1_D2
C++ Type:MooseEnum
Options:TURNBULL_D1_4D2, ANDERSSON, TURNBULL_D1_D2_D3, TURNBULL_D1_D2, TURNBULL_D1_4D2_4D3, TURNBULL_D1_4D2_D3, HBS_BREMIER, TEST_CASE
Controllable:No
Description:Select diffusion coefficient
- dislocation_bubble_nucleation_factor1e+06dislocation bubble nucleation factor, i.e., number of bubbles per dislocation line density (bubbles/(m/m2))
Default:1e+06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:dislocation bubble nucleation factor, i.e., number of bubbles per dislocation line density (bubbles/(m/m2))
- dislocation_core_radius3.85e-10dislocation core radius (m), i.e., burgers vector length
Default:3.85e-10
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:dislocation core radius (m), i.e., burgers vector length
- dislocation_density40000000000000.0Coupled dislocation density (m/m^3)
Default:40000000000000.0
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled dislocation density (m/m^3)
- dislocation_density_materialdislocation density material property (m/m^3)
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:dislocation density material property (m/m^3)
- dislocation_punchingFalseFlag to allow dislocation punching, effectively limiting bubble pressures and tracking the rate of dislocation production.
Default:False
C++ Type:bool
Controllable:No
Description:Flag to allow dislocation punching, effectively limiting bubble pressures and tracking the rate of dislocation production.
- dislocation_trap_Zfactor25Z * dislocation core radius = dislocation_trap_radius (m)
Default:25
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Z * dislocation core radius = dislocation_trap_radius (m)
- doping_typeUNDOPEDThe selected dopant
Default:UNDOPED
C++ Type:MooseEnum
Options:UNDOPED, CR2O3_DOPED
Controllable:No
Description:The selected dopant
- eff_diff_coeff_optionINCLUDING_BUBBLESelect effective diffusion coefficient
Default:INCLUDING_BUBBLE
C++ Type:MooseEnum
Options:INCLUDING_BUBBLE, BULK, LASSMANN, TEST_CASE
Controllable:No
Description:Select effective diffusion coefficient
- effdiffcoeff_scalef1Scaling factor for intragranular effective diffusion coefficient
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for intragranular effective diffusion coefficient
- eos_optionORIGINAL_MODELSelect Equation of State
Default:ORIGINAL_MODEL
C++ Type:MooseEnum
Options:ORIGINAL_MODEL, YANG
Controllable:No
Description:Select Equation of State
- evolve_bubble_pressure_hbsTrueAllow bubble pressure to evolve in hbs region from initial conditions based on evolution equations
Default:True
C++ Type:bool
Controllable:No
Description:Allow bubble pressure to evolve in hbs region from initial conditions based on evolution equations
- fission_gas_concCoupled fission gas concentration
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled fission gas concentration
- fission_rateCoupled fission rate variable (fiss/m^3/s)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled fission rate variable (fiss/m^3/s)
- fission_rate_materialFission rate material property (fiss/m^3/s)
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Fission rate material property (fiss/m^3/s)
- fract_yield0.3017fractional yield of fission gas atoms (Xe + Kr) (/)
Default:0.3017
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:fractional yield of fission gas atoms (Xe + Kr) (/)
- gas_atom_dislocation_diffusion_multiplier1Factor by which gas atom diffusion is multiplied along dislocations compared to the bulk to capture pipe diffusion
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Factor by which gas atom diffusion is multiplied along dislocations compared to the bulk to capture pipe diffusion
- gas_diffusivity_functionOptional function for gas atomic diffusivity (m^2/s). For implementation of the function, the x-axis corresponds to temperature and y-axis corresponds to fission rate. The z-axis is unused, and time is the standard current time.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Optional function for gas atomic diffusivity (m^2/s). For implementation of the function, the x-axis corresponds to temperature and y-axis corresponds to fission rate. The z-axis is unused, and time is the standard current time.
- gbdiffcoeff_scalef1Scaling factor for grain-boundary vacancy diffusion coefficient
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for grain-boundary vacancy diffusion coefficient
- grain_radiusCoupled grain Radius
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled grain Radius
- grain_radius_HBS_constant1.5e-07Constant grain radius for HBS structure (m)
Default:1.5e-07
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Constant grain radius for HBS structure (m)
- grain_radius_const5e-06constant grain radius (m)
Default:5e-06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:constant grain radius (m)
- grainradius_scalef1Scaling factor for grain radius
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for grain radius
- hbs_materialThe name of the HighBurnupStructureFormation material, if any. This is needed when hbs_model=true.
C++ Type:MaterialName
Controllable:No
Description:The name of the HighBurnupStructureFormation material, if any. This is needed when hbs_model=true.
- hbs_pore_evolution_model_optionCONSTANT_DENSITY_MECHANISTIC_RADIUSSelect HBS pore evolution model
Default:CONSTANT_DENSITY_MECHANISTIC_RADIUS
C++ Type:MooseEnum
Options:CONSTANT_DENSITY_MECHANISTIC_RADIUS, MECHANISTIC_DENSITY_EMPIRICAL_RADIUS
Controllable:No
Description:Select HBS pore evolution model
- hbs_volume_fraction_threshold0.5Minimum local volume fraction of HBS for pulverization to occur
Default:0.5
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Minimum local volume fraction of HBS for pulverization to occur
- hydrostatic_stressCoupled hydrostatic Stress
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled hydrostatic Stress
- hydrostatic_stress_const0constant hydrostatic stress (Pa)
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:constant hydrostatic stress (Pa)
- ig_bubble_coarseningNO_COARSENINGSelect intra-granular diffusion algorithm
Default:NO_COARSENING
C++ Type:MooseEnum
Options:NO_COARSENING, WITH_COARSENING
Controllable:No
Description:Select intra-granular diffusion algorithm
- ig_bubble_modelEMP_BAKER_WHITESelect bubble evolution model
Default:EMP_BAKER_WHITE
C++ Type:MooseEnum
Options:EMP_BAKER_WHITE, FIXED, NUCLEATION_RESOLUTION, MECHANISTIC_AAGESEN
Controllable:No
Description:Select bubble evolution model
- ig_diff_algorithmFORMASSelect intra-granular diffusion algorithm
Default:FORMAS
C++ Type:MooseEnum
Options:FORMAS, POLYPOLE1, POLYPOLE2
Controllable:No
Description:Select intra-granular diffusion algorithm
- ig_fully_coupledLOOSELY_COUPLEDSolving diffusion coupled to bubble evolution
Default:LOOSELY_COUPLED
C++ Type:MooseEnum
Options:LOOSELY_COUPLED, FULLY_COUPLED
Controllable:No
Description:Solving diffusion coupled to bubble evolution
- igdiffcoeff_scalef1Scaling factor for intragranular diffusion coefficients
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for intragranular diffusion coefficients
- igdiffcoeff_scalef_HBS1Scaling factor for HBS intragranular diffusion coefficients
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for HBS intragranular diffusion coefficients
- initial_burnup0Burnup reached before annealing/separated effect experiment (GWd/tUO2)
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Burnup reached before annealing/separated effect experiment (GWd/tUO2)
- initial_porosity0.05initial fuel porosity (/)
Default:0.05
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:initial fuel porosity (/)
- intergranular_bubble_coalescence_optionWHITE2004Select intergranular bubble coalescence model
Default:WHITE2004
C++ Type:MooseEnum
Options:WHITE2004, PASTORE2013
Controllable:No
Description:Select intergranular bubble coalescence model
- minimum_pressure_ratio1Factor to limit the equilibrium pressure of bubbles by enforcing a minimum ratio of the equilibrium pressure to the pressure due to surface energies alone. If greater than one, tensile stresses do not impact the equilibrium bubble size. This factor is not allowed to be below 0 since it can result in negative equilibrium pressures. A value of of 0.1 - 0.5 is reasonable for capturing tensile stress impacts on the equilibrium bubble pressure.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Factor to limit the equilibrium pressure of bubbles by enforcing a minimum ratio of the equilibrium pressure to the pressure due to surface energies alone. If greater than one, tensile stresses do not impact the equilibrium bubble size. This factor is not allowed to be below 0 since it can result in negative equilibrium pressures. A value of of 0.1 - 0.5 is reasonable for capturing tensile stress impacts on the equilibrium bubble pressure.
- nucleation_optionHETEROGENEOUSSelect intragranular bubble nucleation model
Default:HETEROGENEOUS
C++ Type:MooseEnum
Options:HETEROGENEOUS, HOMOGENEOUS, TEST_CASE
Controllable:No
Description:Select intragranular bubble nucleation model
- nuclerate_scalef1Scaling factor for nucleation rate
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for nucleation rate
- pellet_brittle_zoneThe name of the UserObject that computes the width of the brittle zone in the fuel pellet
C++ Type:UserObjectName
Controllable:No
Description:The name of the UserObject that computes the width of the brittle zone in the fuel pellet
- pellet_idCoupled pellet ID
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled pellet ID
- percolation_to_surface1.0Optional AuxVariable that indicates whether the local position is connected by a percolated path to a free surface to allow gas release. If this parameter is not set, path to free surface is not considered in the gas release calculation.
Default:1.0
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Optional AuxVariable that indicates whether the local position is connected by a percolated path to a free surface to allow gas release. If this parameter is not set, path to free surface is not considered in the gas release calculation.
- pressure_bubbles_hbs_initial1e+08Initial pressure of bubbles in HBS region (Pa)
Default:1e+08
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Initial pressure of bubbles in HBS region (Pa)
- pulverization_transient_fission_gas_release_materialThe name of the UO2PulverizationTransientFissionGasRelease material, if any. This is needed when pulverization_model=true.
C++ Type:MaterialName
Controllable:No
Description:The name of the UO2PulverizationTransientFissionGasRelease material, if any. This is needed when pulverization_model=true.
- res_param_optionHETEROGENEOUS_WHITESelect resolution parameter
Default:HETEROGENEOUS_WHITE
C++ Type:MooseEnum
Options:HETEROGENEOUS_WHITE, HOMOGENEOUS_LOSONEN, HOMOGENEOUS_PASTORE, HETEROGENEOUS_VESHCHUNOV_TARASOV, HETEROGENEOUS_VESHCHUNOV_LOSONEN, HETEROGENEOUS_SETYAWAN, TEST_CASE
Controllable:No
Description:Select resolution parameter
- resolutionp_scalef1Scaling factor for resolution parameter
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for resolution parameter
- resolutionp_scalef_dislocation1Scaling factor for resolution parameter in dislocations
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for resolution parameter in dislocations
- rod_ave_lin_powLinear power function.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Linear power function.
- saturation_coverage0.5initial grain boundary saturation coverage (/)
Default:0.5
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:initial grain boundary saturation coverage (/)
- semidihedral_angle0.872665Semi-dihedral angle of grain-boundary bubbles (rad)
Default:0.872665
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Semi-dihedral angle of grain-boundary bubbles (rad)
- shear_modulusShear modulus material property (Pa). Required if dislocation_punching=true
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Shear modulus material property (Pa). Required if dislocation_punching=true
- surface_energy0.85UO2 fuel-gas surface energy (J/m^2)
Default:0.85
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:UO2 fuel-gas surface energy (J/m^2)
- temperature_reference_bubble_hbs_initial673.15Reference temperature for initial pressure of bubbles in HBS region (K)
Default:673.15
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Reference temperature for initial pressure of bubbles in HBS region (K)
- temperature_scalef1Scaling factor for temperature
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for temperature
- transient_optionNO_TRANSIENTSelect transient release model]
Default:NO_TRANSIENT
C++ Type:MooseEnum
Options:NO_TRANSIENT, MICROCRACKING_BURNUP, MICROCRACKING, EMPIRICAL_CAPPS
Controllable:No
Description:Select transient release model]
- trap_param_optionDEFAULTSelect trapping parameter
Default:DEFAULT
C++ Type:MooseEnum
Options:DEFAULT, TEST_CASE, GOSELE
Controllable:No
Description:Select trapping parameter
- trappingp_scalef1Scaling factor for trapping parameter
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for trapping parameter
- trappingp_scalef_dislocation1Scaling factor for trapping parameter in dislocation bubbles
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for trapping parameter in dislocation bubbles
- trappingp_scalef_dislocation_line1Scaling factor for trapping parameter in dislocation lines
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scaling factor for trapping parameter in dislocation lines
- vacancies_assisting_gas_diffusion_optionNO_VACANCY_ASSISTSelect intergranular model for vacancy-assisted gas atom diffusion
Default:NO_VACANCY_ASSIST
C++ Type:MooseEnum
Options:NO_VACANCY_ASSIST, COOPER2024
Controllable:No
Description:Select intergranular model for vacancy-assisted gas atom diffusion
- vacancies_per_atom_diffusion_functionOptional function for the number of vacancies assisting gas atom diffusion.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Optional function for the number of vacancies assisting gas atom diffusion.
- vacancy_diffusivity_functionOptional function for vacancy diffusivity (m^2/s). For implementation of the function, the x-axis corresponds to temperature and y-axis corresponds to fission rate. The z-axis is unused, and time is the standard current time.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Optional function for vacancy diffusivity (m^2/s). For implementation of the function, the x-axis corresponds to temperature and y-axis corresponds to fission rate. The z-axis is unused, and time is the standard current time.
- vacancy_dislocation_diffusion_multiplier1Factor by which vacancy diffusion is multiplied along dislocations compared to the bulk to capture pipe diffusion
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Factor by which vacancy diffusion is multiplied along dislocations compared to the bulk to capture pipe diffusion
- vacancy_volume4.09e-29Atomic (vacancy) volume in bubbles (m^3)
Default:4.09e-29
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Atomic (vacancy) volume in bubbles (m^3)
Optional Parameters
- ath_modelFalseActivates the athermal release model
Default:False
C++ Type:bool
Controllable:No
Description:Activates the athermal release model
- 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.
- gbs_modelFalseActivates the grain-boundary sweeping model
Default:False
C++ Type:bool
Controllable:No
Description:Activates the grain-boundary sweeping model
- hbs_modelFalseActivates the high burnup structure model
Default:False
C++ Type:bool
Controllable:No
Description:Activates the high burnup structure model
- 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
- load_ig_gas_concFalseNeed to initialize ig diffusion algorithm modes?
Default:False
C++ Type:bool
Controllable:No
Description:Need to initialize ig diffusion algorithm modes?
- pulverization_modelFalseActivates the pulverization release model (currently also requires the hbs_model=true)
Default:False
C++ Type:bool
Controllable:No
Description:Activates the pulverization release model (currently also requires the hbs_model=true)
- 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
- skip_bdr_modelFalseSkips the grain-boundary model
Default:False
C++ Type:bool
Controllable:No
Description:Skips the grain-boundary model
- testing_outputFalseProvides an analytic reference for the value of the intra-granular fission gas release
Default:False
C++ Type:bool
Controllable:No
Description:Provides an analytic reference for the value of the intra-granular fission gas release
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
- (test/tests/sifgrs/uo2/ad_first_stage.i)
- (test/tests/sifgrs/uo2/first_stage_restart2.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_new_bubble_gb_lim.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza_1pt5.i)
- (test/tests/triso_failure/triso_ipyc_characteristic_strength.i)
- (examples/3D_rodlet_3pellets/smeared/smearedTest3D.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL009/BFL009.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
- (test/tests/sifgrs/uo2/ad_chromia_doped.i)
- (assessment/LWR/validation/Super_Ramp/analysis/Super_Ramp_Base.i)
- (assessment/LWR/validation/IFA_431/analysis/IFA_431_General.i)
- (assessment/MOX/JOYO/MK-II/analysis/MK-II_master_new_bubble_gb_lim.i)
- (examples/multiapp/pin2.i)
- (test/tests/sifgrs/uo2/polypole2.i)
- (test/tests/triso_failure/triso_1d_ipyc_failure.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_809/IFA_535_rod_809.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)
- (test/tests/sifgrs/uo2/ad_mechanistic_igmodel.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE067/UFE067.i)
- (examples/1.5D_restart/Smeared_1.5D.i)
- (test/tests/triso_failure/triso_1d_pd_penetration.i)
- (test/tests/sifgrs/uo2/swelling_porosity.i)
- (assessment/LWR/validation/IFA_681/analysis/rod1/IFA_681_rod1.i)
- (test/tests/sifgrs/uo2/ad_ig_bubble_coarsening.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
- (test/tests/sifgrs/uo2/ad_vacancies_assisting_atom_diff.i)
- (test/tests/element_integral_power/ad_fission_gas_sifgrs_1D.i)
- (workshop/bison_example/Smeared.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/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/TSQ002.i)
- (test/tests/sifgrs/uo2/negative_temperature_exception.i)
- (test/tests/sifgrs/uo2/ad_scidac_resolution.i)
- (examples/TRISO/full_particle/2D/full_particle.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/REP_Na_4.i)
- (test/tests/sifgrs/uo2/percolation.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/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4_GrainGrowth.i)
- (assessment/LWR/validation/Tribulation/analysis/BN1X4/BN1X4.i)
- (test/tests/meso_thcond_test/sifgrs_swelling_fissiongas.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ022/TSQ022_1pt5.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_old_bubble_gb_lim.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2.i)
- (test/tests/standard_lwr_outputs_action/mini_complete_rod.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_10/case_10_1D.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/MOX/JOYO/B14/PTM010/analysis/b14_ptm010_2DRZ_t.i)
- (test/tests/sifgrs/uo2/scidac_resolution.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM073/BFM073.i)
- (assessment/LWR/validation/FUMEXII_Regate/analysis/Regate_smeared.i)
- (test/tests/sifgrs/uo2/ad_polypole2.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)
- (test/tests/sifgrs/uo2/transient_model.i)
- (test/tests/sifgrs/uo2/ad_first_stage_restart2.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_13/case_13_1D.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/MOX/FFTF/FO-2/L09/analysis/fftf_fo2_L09_master.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/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)
- (test/tests/axial_relocation/uo2_dispersal_standard_lwr_output.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
- (test/tests/sifgrs/uo2/fast_mox.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)
- (test/tests/sifgrs/uo2/first_stage.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.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)
- (test/tests/sifgrs/uo2/second_stage.i)
- (test/tests/sifgrs/uo2/option_base.i)
- (test/tests/sifgrs/uo2/eos_yang.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/standard_lwr_outputs_action/pellet_only_ad.i)
- (test/tests/sifgrs/uo2/ad_swelling_porosity.i)
- (test/tests/sifgrs/uo2/first_stage_restart1.i)
- (test/tests/sifgrs/uo2/ad_diffusion_coefficient.i)
- (examples/multiapp/pin1.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/standard_lwr_outputs_action/mini_complete_rod_1D.i)
- (assessment/MOX/JOYO/B14/PTM002/analysis/b14_ptm002_2DRZ_t.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)
- (assessment/MOX/JOYO/B14/PTM003/analysis/b14_ptm003_2DRZ_t.i)
- (test/tests/triso_failure/triso_1d_failure.i)
- (assessment/LWR/validation/OSIRIS_H09/analysis/OSIRIS_H09.i)
- (test/tests/sifgrs/uo2/ig_bubble_coarsening.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)
- (assessment/LWR/validation/IFA_562/analysis/IFA_562_Base.i)
- (examples/3D_rodlet_3pellets/discrete_full/3d_3pellets_mortar.i)
- (test/tests/sifgrs/uo2/polypole1_intergranular_coarsening.i)
- (examples/fast_mox_sifgrs/input_single_pellet_sifgrs_mox.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/MOX/JOYO/MK-II/analysis/MK-II_master_old_bubble_gb_lim.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/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)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4.i)
- (test/tests/element_integral_power/fission_gas_sifgrs_1D.i)
- (test/tests/sifgrs/uo2/chromia_doped.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFL031/BFL031.i)
- (test/tests/triso_failure/triso_1d_layer_stress_strength.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
- (test/tests/sifgrs/uo2/grain_growth.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFG092/BFG092.i)
- (assessment/MOX/JOYO/B14/PTM001/analysis/b14_ptm001_2DRZ_t.i)
- (test/tests/sifgrs/uo2/ad_percolation_xfem.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/Separate_effects_FGB/analysis/Baker_TEM/Baker_TEM_Base.i)
- (test/tests/sifgrs/uo2/ad_grain_growth.i)
- (assessment/LWR/validation/IFA_681/analysis/rod3/IFA_681_rod3.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/smeared_cracking/ADSmearedCracking.i)
- (examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar_friction/2D_discrete_finiteStrain_mortar_friction.i)
- (assessment/LWR/validation/Separate_effects_FGB/analysis/White_AGR_SEM/White_AGR_SEM_Base.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)
- (examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets.i)
- (assessment/LWR/validation/IFA_519/analysis/IFA_519_Base.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part2.i)
- (test/tests/sifgrs/uo2/polypole2_ext_fsngas.i)
- (examples/restart/Quad8.i)
- (assessment/LWR/validation/IFA_677/analysis/IFA_677_Base.i)
- (test/tests/sifgrs/uo2/ad_first_stage_restart1.i)
- (assessment/LWR/validation/IFA_535/analysis/rod_811/IFA_535_rod_811.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_new_bubble_gb_lim.i)
- (test/tests/triso_failure/triso_1d_weibull_probability.i)
- (test/tests/triso_failure/ad_triso_1d_failure.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM071/BFM071.i)
- (test/tests/sifgrs/uo2/ig_bubble_coarsening_disl_density_material.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)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
- (test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
- (examples/2D-RZ_rodlet_10pellets/quad8/Quad8.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE019/UFE019.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM070/BFM070.i)
- (test/tests/sifgrs/uo2/ad_fast_mox.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
- (test/tests/sifgrs/uo2/mechanistic_igmodel.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)
- (test/tests/sifgrs/uo2/vacancies_assisting_atom_diff.i)
- (test/tests/sifgrs/uo2/ad_polypole1.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-2kW.i)
- (test/tests/axial_relocation/uo2_pulverization_phasefield.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim.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)
- (assessment/LWR/validation/Super_Ramp/analysis/PK62/PK62_weighted_gap_VCP.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
- (examples/2D_plane_strain_fretting_wear/fretting-wear-initial.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/LWR/validation/IFA_534/analysis/IFA_534_Base.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_Base.i)
- (test/tests/axial_relocation/ad_uo2_pulverization_phasefield2.i)
- (assessment/LWR/validation/Tribulation/analysis/BN1X3/BN1X3.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_fuel_rod.i)
- (test/tests/sifgrs/uo2/polypole2_hbs.i)
- (test/tests/sifgrs/uo2/ad_percolation.i)
- (examples/TRISO/accident_simulation/triso2D_accident_mortar.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_old_bubble_gb_lim.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFJ027/BFJ027.i)
- (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)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_grainGrowth.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_old_bubble_gb_lim.i)
- (workshop/bison_example/Smeared_mortar.i)
- (assessment/LWR/validation/OSIRIS_J12/analysis/OSIRIS_J12.i)
- (test/tests/sifgrs/uo2/diffusion_coefficient.i)
- (test/tests/uo2_transient_fission_gas_release/ad_uo2_pulverization_phasefield2_transient_FGR.i)
- (test/tests/standard_lwr_outputs_action/pellet_only.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW.i)
- (test/tests/sifgrs/uo2/material_input_fission_rate.i)
- (test/tests/sifgrs/uo2/polypole1.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/RefinementStudy/TSQ002_1pt5_fortyslice.i)
- (test/tests/triso_failure/sub.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)
- (test/tests/sifgrs/uo2/ad_transient_model.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)
- (assessment/LWR/validation/IFA_716/analysis/IFA_716_Base.i)
- (test/tests/meso_thcond_test/sifgrs_swelling_fissiongas_graingrowth.i)
- (test/tests/sifgrs/uo2/percolation_xfem.i)
- (test/tests/sifgrs/uo2/polypole1_intergranular.i)
- (test/tests/sifgrs/uo2/pbz_negative_temperature_exception.i)
- (test/tests/uo2_transient_fission_gas_release/uo2_pulverization_transient_FGR_1D.i)
- (test/tests/sifgrs/uo2/ad_second_stage.i)
- (assessment/LWR/validation/US_PWR_16_x_16/analysis/TSQ002/cracking/TSQ002_cracking.i)
References
- C. Baker and J. C. Killeen.
Fission gas release during post irradiation annealing of UO$_2$.
In International Conference on Materials for Nuclear Reactor Core Applications, Bristol, United Kingdom, October 27-29. 1987.[BibTeX]
@inproceedings{baker_and_killeen_1987, author = "Baker, C. and Killeen, J. C.", title = "Fission gas release during post irradiation annealing of {UO}$\_2$", year = "1987", booktitle = "International Conference on Materials for Nuclear Reactor Core Applications, Bristol, United Kingdom, October 27-29" } - T. Barani, E. Bruschi, D. Pizzocri, G. Pastore, P. Van Uffelen, R.L. Williamson, and L. Luzzi.
Analysis of transient fission gas behaviour in oxide fuel using \mbox BISON and \mbox TRANSURANUS.
Journal of Nuclear Materials, 486:96–110, 2017.[BibTeX]
@article{barani_et_al_2016, author = "Barani, T. and Bruschi, E. and Pizzocri, D. and Pastore, G. and Van Uffelen, P. and Williamson, R.L. and Luzzi, L.", title = "Analysis of transient fission gas behaviour in oxide fuel using \mbox{BISON} and \mbox{TRANSURANUS}", journal = "Journal of Nuclear Materials", volume = "486", pages = "96-110", year = "2017" } - T. Barani, A. Magni, D. Pizzocri, L. Cognini, P. Van Uffelen, L. Luzzi, and G. Pastore.
Modeling and assessment of intra-granular bubble evolution and coarsening in uranium dioxide.
In NuMat18: The nuclear materials conference. Seattle, USA, 2018.[BibTeX]
@inproceedings{barani_2019, author = "Barani, T. and Magni, A. and Pizzocri, D. and Cognini, L. and Van Uffelen, P. and Luzzi, L. and Pastore, G.", title = "Modeling and assessment of intra-granular bubble evolution and coarsening in uranium dioxide", year = "2018", booktitle = "{NuMat18: The nuclear materials conference}", address = "Seattle, USA" } - T. Barani, G. Pastore, A. Magni, D. Pizzocri, P. Van Uffelen, and L. Luzzi.
Modeling intra-granular fission gas bubble evolution and coarsening in uranium dioxide during in-pile transients.
Journal of Nuclear Materials, 538:152195, 2020.[BibTeX]
@article{BARANI2020152195, author = "Barani, T. and Pastore, G. and Magni, A. and Pizzocri, D. and {Van Uffelen}, P. and Luzzi, L.", title = "Modeling intra-granular fission gas bubble evolution and coarsening in uranium dioxide during in-pile transients", journal = "Journal of Nuclear Materials", volume = "538", pages = "152195", year = "2020" } - T. Barani, G. Pastore, D. Pizzocri, D. A. Andersson, C. Matthews, A. Alfonsi, K. A. Gamble, P. Van Uffelen, L. Luzzi, and J. D. Hales.
Multiscale modeling of fission gas behavior in u3si2 under LWR conditions.
Journal of Nuclear Materials, 522:97–110, 8 2019.
doi:10.1016/J.JNUCMAT.2019.04.037.[BibTeX]
@article{barani2019JNM, author = "Barani, T. and Pastore, G. and Pizzocri, D. and Andersson, D. A. and Matthews, C. and Alfonsi, A. and Gamble, K. A. and Uffelen, P. Van and Luzzi, L. and Hales, J. D.", doi = "10.1016/J.JNUCMAT.2019.04.037", issn = "0022-3115", journal = "Journal of Nuclear Materials", month = "8", pages = "97-110", publisher = "North-Holland", title = "Multiscale modeling of fission gas behavior in U3Si2 under {LWR} conditions", volume = "522", year = "2019" } - T. Barani, D. Pizzocri, F. Cappia, L. Luzzi, G. Pastore, and P. Van Uffelen.
Modeling high burnup structure in oxide fuels for application to fuel performance codes. part I: High burnup structure formation.
Journal of Nuclear Materials, 539:152296, 2020.
doi:10.1016/j.jnucmat.2020.152296.[BibTeX]
@article{barani2020_hbs, author = "Barani, T. and Pizzocri, D. and Cappia, F. and Luzzi, L. and Pastore, G. and Uffelen, P. Van", title = "Modeling high burnup structure in oxide fuels for application to fuel performance codes. part {I: H}igh burnup structure formation", journal = "Journal of Nuclear Materials", volume = "539", pages = "152296", doi = "10.1016/j.jnucmat.2020.152296", year = "2020" } - Tommaso Barani, Davide Pizzocri, Fabiola Cappia, Giovanni Pastore, Lelio Luzzi, and Paul Van Uffelen.
Modeling high burnup structure in oxide fuels for application to fuel performance codes. Part II: Porosity evolution.
Journal of Nuclear Materials, 563:153627, 5 2022.
doi:10.1016/J.JNUCMAT.2022.153627.[BibTeX]
@article{barani2022153627, author = "Barani, Tommaso and Pizzocri, Davide and Cappia, Fabiola and Pastore, Giovanni and Luzzi, Lelio and Uffelen, Paul Van", doi = "10.1016/J.JNUCMAT.2022.153627", issn = "0022-3115", journal = "Journal of Nuclear Materials", month = "5", pages = "153627", publisher = "North-Holland", title = "Modeling high burnup structure in oxide fuels for application to fuel performance codes. {P}art {II}: {P}orosity evolution", volume = "563", year = "2022" } - S. Brémier and C. T. Walker.
Radiation-enhanced diffusion and fission gas release from recrystallised grains in high burn-up \hbox \UO\_\2\ nuclear fuel.
Radiation Effects and Defects in Solids, 157:311–322, 2002.
URL: https://www.tandfonline.com/doi/abs/10.1080/10420150213000, doi:10.1080/10420150213000.[BibTeX]
@article{bremier2022REDS, author = "Br\'emier, S. and Walker, C. T.", doi = "10.1080/10420150213000", issn = "10420150", issue = "3", journal = "Radiation Effects and Defects in Solids", pages = "311-322", publisher = "Taylor \& Francis Group", title = "Radiation-enhanced diffusion and fission gas release from recrystallised grains in high burn-up \hbox\{UO\}\_\{2\} nuclear fuel", volume = "157", url = "https://www.tandfonline.com/doi/abs/10.1080/10420150213000", year = "2002" } - F. Cappia, D. Pizzocri, A. Schubert, P. Van Uffelen, G. Paperini, D. Pellottiero, R. Macián-Juan, and V. V. Rondinella.
Critical assessment of the pore size distribution in the rim region of high burnup UO$_2$ fuels.
Journal of Nuclear Materials, 480:138–149, 11 2016.
doi:10.1016/J.JNUCMAT.2016.08.010.[BibTeX]
@article{cappia2016JNM, author = "Cappia, F. and Pizzocri, D. and Schubert, A. and Uffelen, P. Van and Paperini, G. and Pellottiero, D. and Maci\'{a}n-Juan, R. and Rondinella, V. V.", doi = "10.1016/J.JNUCMAT.2016.08.010", issn = "0022-3115", journal = "Journal of Nuclear Materials", keywords = "High burnup UO2 fuel,Image analysis,Kernel estimator,Pore size distribution,Schwartz-Saltykov method", month = "11", pages = "138-149", publisher = "North-Holland", title = "Critical assessment of the pore size distribution in the rim region of high burnup {UO}$\_2$ fuels", volume = "480", year = "2016" } - Nathan Capps, Larry Aagesen, David Andersson, Oliver Baldwin, W. Cade Brinkley, Michael W.D. Cooper, Jason Harp, Stephen Novascone, Pierre-Clément A. Simon, Christopher Matthews, and Brian D. Wirth.
Empirical and mechanistic transient fission gas release model for high-burnup loca conditions.
Journal of Nuclear Materials, 584:154557, 2023.
URL: https://www.sciencedirect.com/science/article/pii/S0022311523003240, doi:https://doi.org/10.1016/j.jnucmat.2023.154557.[BibTeX]
@article{CAPPS2023154557, author = "Capps, Nathan and Aagesen, Larry and Andersson, David and Baldwin, Oliver and Brinkley, W. Cade and Cooper, Michael W.D. and Harp, Jason and Novascone, Stephen and Simon, Pierre-Clément A. and Matthews, Christopher and Wirth, Brian D.", title = "Empirical and mechanistic transient fission gas release model for high-burnup LOCA conditions", journal = "Journal of Nuclear Materials", volume = "584", pages = "154557", year = "2023", issn = "0022-3115", doi = "https://doi.org/10.1016/j.jnucmat.2023.154557", url = "https://www.sciencedirect.com/science/article/pii/S0022311523003240" } - M.W.D. Cooper, C. Matthews, and D.A. Andersson.
The role of irradiation-enhanced interstitial diffusion in over-pressurizing fission gas bubbles in UO$_2$.
Journal of Nuclear Materials, 2024.[BibTeX]
@article{Cooper2024, author = "Cooper, M.W.D. and Matthews, C. and Andersson, D.A.", title = "The role of irradiation-enhanced interstitial diffusion in over-pressurizing fission gas bubbles in {UO}$\_2$", journal = "Journal of Nuclear Materials", volume = "Under Review", year = "2024" } - G. Ducros, Y . Pontillon, and P.P. Malgouyres.
Synthesis of the VERCORS experimental program: separate-effect experiments on fission product release, in support of the PHEBUS-FP programme.
Annals of Nuclear Energy, 61:75–87, 2013.[BibTeX]
@article{ducros_et_al_2013, author = "Ducros, G. and Pontillon, Y . and Malgouyres, P.P.", title = "Synthesis of the {VERCORS} experimental program: separate-effect experiments on fission product release, in support of the {PHEBUS-FP} programme", journal = "Annals of Nuclear Energy", year = "2013", volume = "61", pages = "75-87" } - U. Gösele.
Concentration dependence of rate constants for diffusion- or reaction-controlled void-point-defect reactions.
Journal of Nuclear Materials, 78:83–95, 11 1978.
doi:10.1016/0022-3115(78)90507-X.[BibTeX]
@article{gosele1978JNM, author = {G\"{o}sele, U.}, doi = "10.1016/0022-3115(78)90507-X", issn = "0022-3115", issue = "1", journal = "Journal of Nuclear Materials", month = "11", pages = "83-95", publisher = "North-Holland", title = "Concentration dependence of rate constants for diffusion- or reaction-controlled void-point-defect reactions", volume = "78", year = "1978" } - R. O.A. Hall, M. J. Mortimer, and D. A. Mortimer.
Surface energy measurements on UO$_2$ — a critical review.
Journal of Nuclear Materials, 148:237–256, 5 1987.
doi:10.1016/0022-3115(87)90017-1.[BibTeX]
@article{hall1987JNM, author = "Hall, R. O.A. and Mortimer, M. J. and Mortimer, D. A.", doi = "10.1016/0022-3115(87)90017-1", issn = "0022-3115", issue = "3", journal = "Journal of Nuclear Materials", month = "5", pages = "237-256", publisher = "North-Holland", title = "Surface energy measurements on {UO}$\_2$ — A critical review", volume = "148", year = "1987" } - P. Hermansonn and A.R. Massih.
An effective method for calculation of diffusive flow in spherical grains.
Journal of Nuclear Materials, 304:204–211, 2002.[BibTeX]
@ARTICLE{hermansonn_massih_2002, author = "Hermansonn, P. and Massih, A.R.", title = "An effective method for calculation of diffusive flow in spherical grains", journal = "Journal of Nuclear Materials", year = "2002", volume = "304", pages = "204-211" } - S. Kashibe, K. Une, and K. Nogita.
Formation and growth of intragranular fission gas bubbles in UO$_2$ fuels with burnup of 6-83 GWd/t.
Journal of Nuclear Materials, 206:22–34, 1969.[BibTeX]
@ARTICLE{kashibe_et_al_1993, author = "Kashibe, S. and Une, K. and Nogita, K.", title = "Formation and growth of intragranular fission gas bubbles in {UO}$\_2$ fuels with burnup of 6-83 {GW}d/t", journal = "Journal of Nuclear Materials", year = "1969", volume = "206", pages = "22-34" } - T. Kogai.
Modelling of fission gas release and gaseous swelling of light water reactor fuels.
Journal of Nuclear Materials, 244:131–140, 1997.[BibTeX]
@ARTICLE{kogai_1997, author = "Kogai, T.", title = "Modelling of fission gas release and gaseous swelling of light water reactor fuels", journal = "Journal of Nuclear Materials", year = "1997", volume = "244", pages = "131-140" } - Y.-H. Koo, B.-H. Lee, and D.-S. Sohn.
Analysis of fission gas release and gaseous swelling in UO$_2$ fuel under the effect of external restraint.
Journal of Nuclear Materials, 280:86–98, 2000.[BibTeX]
@ARTICLE{koo_et_al_2000, author = "Koo, Y.-H. and Lee, B.-H. and Sohn, D.-S.", title = "Analysis of fission gas release and gaseous swelling in {UO}$\_2$ fuel under the effect of external restraint", journal = "Journal of Nuclear Materials", year = "2000", volume = "280", pages = "86-98" } - K. Lassmann, C.T. Walker, J. van de Laar, and F. Lindström.
Modelling the high burnup UO$_2$ structure in LWR fuel.
Journal of Nuclear Materials, 226:1–8, 1995.[BibTeX]
@ARTICLE{lassmann.ea95, author = {Lassmann, K. and Walker, C.T. and van de Laar, J. and Lindstr\"om, F.}, title = "Modelling the high burnup {UO}$\_2$ structure in {LWR} fuel", journal = "Journal of Nuclear Materials", year = "1995", volume = "226", pages = "1-8" } - B.J. Lewis.
Fission product release from nuclear fuel by recoil and knockout.
Journal of Nuclear Materials, 148:28–42, 1987.[BibTeX]
@ARTICLE{lewis_1987, author = "Lewis, B.J.", title = "Fission product release from nuclear fuel by recoil and knockout", journal = "Journal of Nuclear Materials", year = "1987", volume = "148", pages = "28-42" } - P. Lösönen.
On the effect of irradiation-induced resolution in modelling fission gas release in UO\textsubscript 2 LWR fuel.
Journal of Nuclear Materials, 496:140–156, 2017.[BibTeX]
@article{losonen_2017, author = {L{\"o}s{\"o}nen, P.}, issn = "00223115", journal = "Journal of Nuclear Materials", pages = "140-156", title = "{On the effect of irradiation-induced resolution in modelling fission gas release in UO\textsubscript{2} LWR fuel}", volume = "496", year = "2017" } - A.R. Massih and K. Forsberg.
Calculation of grain boundary gaseous swelling in UO$_2$.
Journal of Nuclear Materials, 377:406–408, 2008.[BibTeX]
@ARTICLE{massih_forsberg_2008, author = "Massih, A.R. and Forsberg, K.", title = "Calculation of grain boundary gaseous swelling in {UO}$\_2$", journal = "Journal of Nuclear Materials", year = "2008", volume = "377", pages = "406-408" } - C. Matthews, R. Perriot, M.W.D. Cooper, C.R. Stanek, and D.A. Andersson.
Cluster dynamics simulations of xenon diffusion during irradiation in UO$_2$.
Journal of Nuclear Materials, 540:152326, 2020.
URL: https://www.sciencedirect.com/science/article/pii/S0022311520301884, doi:https://doi.org/10.1016/j.jnucmat.2020.152326.[BibTeX]
@article{Matthews2020, author = "Matthews, C. and Perriot, R. and Cooper, M.W.D. and Stanek, C.R. and Andersson, D.A.", title = "Cluster dynamics simulations of xenon diffusion during irradiation in {UO}$\_2$", journal = "Journal of Nuclear Materials", volume = "540", pages = "152326", year = "2020", doi = "https://doi.org/10.1016/j.jnucmat.2020.152326", url = "https://www.sciencedirect.com/science/article/pii/S0022311520301884" } - L. Noirot.
MARGARET: a comprehensive code for the description of fission gas behavior.
Nuclear Engineering and Design, 241:2099–2118, 6 2011.
doi:10.1016/J.NUCENGDES.2011.03.044.[BibTeX]
@article{noirot2011NED, author = "Noirot, L.", doi = "10.1016/J.NUCENGDES.2011.03.044", issn = "0029-5493", issue = "6", journal = "Nuclear Engineering and Design", month = "6", pages = "2099-2118", publisher = "North-Holland", title = "{MARGARET}: A comprehensive code for the description of fission gas behavior", volume = "241", year = "2011" } - M. Oguma.
Cracking and relocation behavior of nuclear-fuel pellets during rise to power.
Nuclear Engineering and Design, 76(1):35–45, 1983.
doi:10.1016/0029-5493(83)90045-6.[BibTeX]
@article{oguma_1983, author = "Oguma, M.", title = "Cracking and relocation behavior of nuclear-fuel pellets during rise to power", year = "1983", journal = "Nuclear Engineering and Design", volume = "76", number = "1", pages = "35-45", doi = "10.1016/0029-5493(83)90045-6" } - D. R. Olander.
Fundamental aspects of nuclear reactor fuel elements.
Technical Information Center, Energy Research and Development Administration, 1976.[BibTeX]
@BOOK{olander76, author = "Olander, D. R.", title = "Fundamental aspects of nuclear reactor fuel elements", publisher = "Technical Information Center, Energy Research and Development Administration", year = "1976" } - D. R. Olander and D. Wongsawaeng.
Re-solution of fission gas - A review: Part I. Intragranular bubbles.
Journal of Nuclear Materials, 354:94–109, 2006.[BibTeX]
@article{olander_and_wongsawaeng_2006, author = "Olander, D. R. and Wongsawaeng, D.", title = "Re-solution of fission gas - {A} review: {P}art {I}. {I}ntragranular bubbles", journal = "Journal of Nuclear Materials", year = "2006", volume = "354", pages = "94-109" } - D.R. Olander and P. Van Uffelen.
On the role of grain boundary diffusion in fission gas release.
Journal of Nuclear Materials, 288:137–147, 2001.[BibTeX]
@ARTICLE{olander_vanuffelen_2001, author = "Olander, D.R. and Uffelen, P. Van", title = "On the role of grain boundary diffusion in fission gas release", journal = "Journal of Nuclear Materials", year = "2001", volume = "288", pages = "137-147" } - G. Pastore, L. Luzzi, V. Di Marcello, and P. Van Uffelen.
Physics-based modelling of fission gas swelling and release in UO$_2$ applied to integral fuel rod analysis.
Nuclear Engineering and Design, 256:75–86, 2013.[BibTeX]
@ARTICLE{pastore_et_al_2013, author = "Pastore, G. and Luzzi, L. and Marcello, V. Di and Uffelen, P. Van", title = "Physics-based modelling of fission gas swelling and release in {UO}$\_2$ applied to integral fuel rod analysis", journal = "Nuclear Engineering and Design", year = "2013", volume = "256", pages = "75-86" } - G. Pastore, D. Pizzocri, S. R. Novascone, D. M. Perez, B. W. Spencer, R.L. Williamson, P. Van Uffelen, and L. Luzzi.
Modelling of transient fission gas behaviour in oxide fuel and application to the BISON code.
In Enlarged Halden Programme Group Meeting, Røros, Norway, September 7-12, volume. 2014.[BibTeX]
@inproceedings{pastore_et_al_2014_ehpg, author = "Pastore, G. and Pizzocri, D. and Novascone, S. R. and Perez, D. M. and Spencer, B. W. and Williamson, R.L. and Uffelen, P. Van and Luzzi, L.", title = "Modelling of Transient Fission Gas Behaviour in Oxide Fuel and Application to the {BISON} Code", year = "2014", booktitle = "Enlarged Halden Programme Group Meeting, R{\o}ros, Norway, September 7-12", volume = "", number = "", pages = "" } - D Pizzocri, G Pastore, T Barani, A Magni, L Luzzi, P Van Uffelen, SA Pitts, A Alfonsi, and JD Hales.
A model describing intra-granular fission gas behaviour in oxide fuel for advanced engineering tools.
Journal of Nuclear Materials, 2018.[BibTeX]
@article{pizzocri_et_al_2018, author = "Pizzocri, D and Pastore, G and Barani, T and Magni, A and Luzzi, L and Van Uffelen, P and Pitts, SA and Alfonsi, A and Hales, JD", title = "A model describing intra-granular fission gas behaviour in oxide fuel for advanced engineering tools", journal = "Journal of Nuclear Materials", year = "2018", publisher = "Elsevier" } - D. Pizzocri, T. Barani, and L. Luzzi.
SCIANTIX: a new open source multi-scale code for fission gas behaviour modelling designed for nuclear fuel performance codes.
Journal of Nuclear Materials, 532:152042, 4 2020.
doi:10.1016/J.JNUCMAT.2020.152042.[BibTeX]
@article{pizzocri2020152042, author = "Pizzocri, D. and Barani, T. and Luzzi, L.", doi = "10.1016/J.JNUCMAT.2020.152042", issn = "0022-3115", journal = "Journal of Nuclear Materials", month = "4", pages = "152042", publisher = "North-Holland", title = "{SCIANTIX}: A new open source multi-scale code for fission gas behaviour modelling designed for nuclear fuel performance codes", volume = "532", year = "2020" } - D. Pizzocri, G. Pastore, T. Barani, E. Bruschi, L. Luzzi, and P. Van Uffelen.
Modelling of Burst Release in Oxide Fuel and Application to the \mbox TRANSURANUS Code.
In $\mathrm 11^th$ International Conference on WWER Fuel Performance, Modelling and Experimental Support, Varna, Bulgaria, September 26-October 3. 2015.[BibTeX]
@inproceedings{pizzocri_et_al_2015_wwer, author = "Pizzocri, D. and Pastore, G. and Barani, T. and Bruschi, E. and Luzzi, L. and Van Uffelen, P.", title = "Modelling of {B}urst {R}elease in {O}xide {F}uel and {A}pplication to the \mbox{TRANSURANUS} {C}ode", year = "2015", booktitle = "$\mathrm{11^{th}}$ International Conference on WWER Fuel Performance, Modelling and Experimental Support, Varna, Bulgaria, September 26-October 3" } - D. Pizzocri, C. Rabiti, L. Luzzi, T. Barani, P. Van Uffelen, and G. Pastore.
PolyPole-1: An accurate numeical algorithm for intra-granular fission gas release.
Journal of Nuclear Materials, 478:333–342, 2016.[BibTeX]
@ARTICLE{pizzocri_et_al_2016, author = "Pizzocri, D. and Rabiti, C. and Luzzi, L. and Barani, T. and Uffelen, P. Van and Pastore, G.", title = "Poly{P}ole-1: {A}n accurate numeical algorithm for intra-granular fission gas release", journal = "Journal of Nuclear Materials", year = "2016", volume = "478", pages = "333-342" } - J. Rest.
The effect of irradiation-induced gas-atom re-solution on grain-boundary bubble growth.
Journal of Nuclear Materials, 321:305–312, 2003.[BibTeX]
@ARTICLE{rest_2003, author = "Rest, J.", title = "The effect of irradiation-induced gas-atom re-solution on grain-boundary bubble growth", journal = "Journal of Nuclear Materials", year = "2003", volume = "321", pages = "305-312" } - E. Rothwell.
The release of Kr$^85$ from irradiated uranium dioxide on post-irradiation annealing.
Journal of Nuclear Materials, 5():241–249, 1962.[BibTeX]
@article{rothwell_1962, author = "Rothwell, E.", title = "The release of {K}r$^{85}$ from irradiated uranium dioxide on post-irradiation annealing", journal = "Journal of Nuclear Materials", year = "1962", volume = "5", pages = "241-249", number = "" } - E. Sartori, J. Killeen, and J. A. Turnbull.
International Fuel Performance Experiments (IFPE) Database.
OECD-NEA, 2010, available at http://www.oecd-nea.org/science/fuel/ifpelst.html.[BibTeX]
@misc{ifpe_database, author = "Sartori, E. and Killeen, J. and Turnbull, J. A.", title = "International {F}uel {P}erformance {E}xperiments ({IFPE}) {D}atabase", year = "", note = "{OECD-NEA}, 2010, available at http://www.oecd-nea.org/science/fuel/ifpelst.html" } - W. Setyawan, M. W. D. Cooper, K. J. Roche, R. J. Kurtz, B. P. Uberuaga, D. A. Andersson, and B. D. Wirth.
Atomistic model of xenon gas bubble re-solution rate due to thermal spike in uranium oxide.
Journal of Applied Physics, 124(7):075107 (11 pages), August 2018.
\url https://doi.org/10.1063/1.5042770.[BibTeX]
@Article{Setyawan_2018, author = "Setyawan, W. and Cooper, M. W. D. and Roche, K. J. and Kurtz, R. J. and Uberuaga, B. P. and Andersson, D. A. and Wirth, B. D.", title = "{Atomistic model of xenon gas bubble re-solution rate due to thermal spike in uranium oxide}", journal = "Journal of Applied Physics", month = "August", year = "2018", volume = "124", number = "7", pages = "075107 (11 pages)", note = "\url{https://doi.org/10.1063/1.5042770}" } - Pierre-Clément A. Simon, Larry Kenneth Aagesen, Jr., Nathan Capps, Michael W. D. Cooper, Kyle A. Gamble, Logan H. Harbour, Christopher Matthews, Stephen R. Novascone, Daniel Schwen, and Brian Wirth.
Compare predictions of transient fission gas release by empirical and mechanistic models to experiments in high burnup UO$_2$ fuel.
Tech. Rep. INL/RPT-23-75026, Idaho National Laboratory, Idaho Falls, ID United States, 9 2023.
URL: https://www.osti.gov/biblio/2203701, doi:10.2172/2203701.[BibTeX]
@techreport{INL/RPT-23-75026, author = "Simon, Pierre-Cl\'{e}ment A. and Aagesen, Jr., Larry Kenneth and Capps, Nathan and Cooper, Michael W. D. and Gamble, Kyle A. and Harbour, Logan H. and Matthews, Christopher and Novascone, Stephen R. and Schwen, Daniel and Wirth, Brian", title = "Compare predictions of transient fission gas release by empirical and mechanistic models to experiments in high burnup {UO}$\_2$ fuel", doi = "10.2172/2203701", url = "https://www.osti.gov/biblio/2203701", type = "Tech. Rep.", number = "INL/RPT-23-75026", institution = "Idaho National Laboratory", address = "Idaho Falls, ID United States", year = "2023", month = "9" } - Pierre-Clément A. Simon, Kyle A. Gamble, Arianna Pagani, Ian T. Ferguson, Daniel Schwen, Logan H. Harbour, Larry Kenneth Aagesen Jr, Stephen R. Novascone, Nathan Capps, Michael W. D. Cooper, Christopher Matthews, and David Andersson.
Deployment of BISON models of fuel restructuring at high burnup and related fission gas behavior in UO$_2$.
Technical Report INL/RPT-24-05038, Idaho National Laboratory, 9 2024.
URL: https://www.osti.gov/servlets/purl/2472822/, doi:10.2172/2472822.[BibTeX]
@techreport{INL/RPT-24-05038, author = "Simon, Pierre-Cl\'{e}ment A. and Gamble, Kyle A. and Pagani, Arianna and Ferguson, Ian T. and Schwen, Daniel and Harbour, Logan H. and Jr, Larry Kenneth Aagesen and Novascone, Stephen R. and Capps, Nathan and Cooper, Michael W. D. and Matthews, Christopher and Andersson, David", city = "Idaho Falls, ID (United States)", doi = "10.2172/2472822", institution = "Idaho National Laboratory", number = "INL/RPT-24-05038", month = "9", title = "Deployment of {BISON} models of fuel restructuring at high burnup and related fission gas behavior in {UO}$\_2$", url = "https://www.osti.gov/servlets/purl/2472822/", year = "2024" } - M.V. Speight.
A calculation on the migration of fission gas in material exhibiting precipitation and re-solution of gas atoms under irradiation.
Nuclear Science and Engineering, 37:180–185, 1969.[BibTeX]
@ARTICLE{speight1969, author = "Speight, M.V.", title = "A Calculation on the migration of fission gas in material exhibiting precipitation and re-solution of gas atoms under irradiation", journal = "Nuclear Science and Engineering", year = "1969", volume = "37", pages = "180-185" } - M.V. Speight and W. Beere.
Vacancy potential and void growth on grain boundaries.
Metal Science, 9:190–191, 1975.[BibTeX]
@ARTICLE{speightandbeere1975, author = "Speight, M.V. and Beere, W.", title = "Vacancy Potential and Void Growth on Grain Boundaries", journal = "Metal Science", year = "1975", volume = "9", pages = "190-191" } - 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" } - S. Torquato.
Random Heterogeneous Materials: Microstructure and Macroscopic Properties.
Volume 82.
Springer, 2013.
ISBN 4420767936.
arXiv:1406.6401, doi:10.1016/j.camwa.2013.03.019.[BibTeX]
@book{Torquato2013, author = "Torquato, S.", booktitle = "Interdisciplinary Applied Mathematics", doi = "10.1016/j.camwa.2013.03.019", eprint = "1406.6401", isbn = "4420767936", issn = "1539-3755", number = "4", pages = "476", publisher = "Springer", pmid = "15267983", title = "{Random Heterogeneous Materials: Microstructure and Macroscopic Properties}", volume = "82", year = "2013" } - J.A. Turnbull.
The distribution of intragranular fission gas bubbles in uo2 during irradiation.
Journal of Nuclear Materials, 38(2):203 – 212, 1971.
URL: http://www.sciencedirect.com/science/article/pii/0022311571900444, doi:10.1016/0022-3115(71)90044-4.[BibTeX]
@article{turnbull_1971, author = "Turnbull, J.A.", title = "The distribution of intragranular fission gas bubbles in UO2 during irradiation", journal = "Journal of Nuclear Materials", volume = "38", number = "2", pages = "203 - 212", year = "1971", issn = "0022-3115", doi = "10.1016/0022-3115(71)90044-4", url = "http://www.sciencedirect.com/science/article/pii/0022311571900444" } - K. Une and S. Kashibe.
Fission gas release during post irradiation annealing of BWR fuels.
Journal of Nuclear Science and Technology, 27:1002–1016, 1990.[BibTeX]
@article{une_kashibe_1990, author = "Une, K. and Kashibe, S.", title = "Fission gas release during post irradiation annealing of {BWR} fuels", journal = "Journal of Nuclear Science and Technology", year = "1990", volume = "27", pages = "1002-1016" } - M. S. Veshchunov and V. I. Tarasov.
Modelling of irradiated UO\textsubscript 2 fuel behaviour under transient conditions.
Journal of Nuclear Materials, 437(1-3):250–260, 2013.
doi:10.1016/j.jnucmat.2013.02.011.[BibTeX]
@article{veshchunov_2013, author = "Veshchunov, M. S. and Tarasov, V. I.", doi = "10.1016/j.jnucmat.2013.02.011", journal = "Journal of Nuclear Materials", number = "1-3", pages = "250-260", title = "{Modelling of irradiated UO\textsubscript{2} fuel behaviour under transient conditions}", volume = "437", year = "2013" } - M.S. Veshchunov.
Modelling of grain face bubbles coalescence in irradiated UO$_2$ fuel.
Journal of Nuclear Materials, 374:44–53, 2008.[BibTeX]
@ARTICLE{veshchunov_2008, author = "Veshchunov, M.S.", title = "Modelling of grain face bubbles coalescence in irradiated {UO}$\_2$ fuel", journal = "Journal of Nuclear Materials", year = "2008", volume = "374", pages = "44-53" } - R.J. White.
The development of grain-face porosity in irradiated oxide fuel.
Journal of Nuclear Materials, 325:61–77, 2004.[BibTeX]
@ARTICLE{white2004, author = "White, R.J.", title = "The development of grain-face porosity in irradiated oxide fuel", journal = "Journal of Nuclear Materials", year = "2004", volume = "325", pages = "61-77" } - R.J. White, R.C. Corcoran, and J.P. Barnes.
A Summary of Swelling Data Obtained from the AGR/Halden Ramp Test Programme.
Technical Report R&T/NG/EXT/REP/0206/02, British Nuclear Fuels Ltd., 2006.[BibTeX]
@techreport{white_et_al_2006, author = "White, R.J. and Corcoran, R.C. and Barnes, J.P.", title = "{A Summary of Swelling Data Obtained from the AGR/Halden Ramp Test Programme}", year = "2006", number = "R\\&T/NG/EXT/REP/0206/02", institution = "{British Nuclear Fuels Ltd.}", publisher = "", volume = "" } - R.J. White and M.O. Tucker.
A new fission-gas release model.
Journal of Nuclear Materials, 118(1):1–38, 1983.
doi:10.1016/0022-3115(83)90176-9.[BibTeX]
@ARTICLE{whiteandtucker1983, author = "White, R.J. and Tucker, M.O.", title = "A new fission-gas release model", journal = "Journal of Nuclear Materials", year = "1983", volume = "118", number = "1", pages = "1-38", doi = "10.1016/0022-3115(83)90176-9" } - L. Yang and B. Wirth.
An improved xenon equation of state for nanobubbles in UO$_2$.
Journal of Nuclear Materials, 572:154089, 2022.
URL: https://www.sciencedirect.com/science/article/pii/S0022311522005700, doi:https://doi.org/10.1016/j.jnucmat.2022.154089.[BibTeX]
@article{Yang2022, author = "Yang, L. and Wirth, B.", title = "An improved xenon equation of state for nanobubbles in {UO}$\_2$", journal = "Journal of Nuclear Materials", volume = "572", pages = "154089", year = "2022", issn = "0022-3115", doi = "https://doi.org/10.1016/j.jnucmat.2022.154089", url = "https://www.sciencedirect.com/science/article/pii/S0022311522005700" } - G. Zullo, D. Pizzocri, and L. Luzzi.
The SCIANTIX code for fission gas behaviour: status, upgrades, separate-effect validation, and future developments.
Journal of Nuclear Materials, 587:154744, 12 2023.
doi:10.1016/J.JNUCMAT.2023.154744.[BibTeX]
@article{zullo2023154744, author = "Zullo, G. and Pizzocri, D. and Luzzi, L.", doi = "10.1016/J.JNUCMAT.2023.154744", issn = "0022-3115", journal = "Journal of Nuclear Materials", month = "12", pages = "154744", publisher = "North-Holland", title = "The {SCIANTIX} code for fission gas behaviour: Status, upgrades, separate-effect validation, and future developments", volume = "587", year = "2023" }
(test/tests/element_integral_power/fission_gas_sifgrs_1D.i)
# Tests the ElementIntegralPower postprocessor
#
# A constant volumetric fission rate of 3.125e18 fissions/m^3-s is applied to a RZ cylinder
# having an inner radius of 0.01 m, outer radius of 0.0114818 m and height of 0.01 m.
# The power is thus constant with magnitude:
#
# Power = Fdot * Energy_per_fission * Volume
# = 3.125e18 * 3.2e-11 * Pi*(0.0114818^2 - 0.01^2) * 0.01
# = 100
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
fuel_height = 0.01
include_clad = false
include_plenum = false
slices_per_block = 1
pellet_bottom_coor = 0
pellet_outer_radius = 0.011481768
pellet_inner_radius = 0.01
clad_gap_width = 0
clad_thickness = 0
elem_type = EDGE2
pellet_mesh_density = customize
nx_p = 1
[]
[]
[Functions]
[unity]
type = ParsedFunction
expression = '1.0'
[]
[]
[Variables]
[temp]
initial_condition = 500.0
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 3.125e18
fission_rate_function = unity
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[left_T]
type = DirichletBC
variable = temp
boundary = 13
value = 500.0
[]
[]
[Materials]
[fuel]
type = HeatConductionMaterial
block = fuel
thermal_conductivity = 10
specific_heat = 100
[]
[density]
type = ParsedMaterial
block = fuel
property_name = density
expression = 10000
[]
[fission_gas_release]
type = UO2Sifgrs
temperature = temp
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 2
dt = 1.0e6
nl_abs_tol = 1e-8
[]
[Postprocessors]
[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
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[]
[Outputs]
exodus = true
[]
(test/tests/sifgrs/uo2/ad_first_stage.i)
# @Requirement F2.40
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = ADMaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
[out]
type = Exodus
[]
[csv]
type = CSV
[]
[]
(test/tests/sifgrs/uo2/first_stage_restart2.i)
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = timestep_begin
[]
[FRA]
type = MaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = 1
saturation_coverage = 0
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 28e6
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
file_base = first_stage_out
exodus = true
[]
[Problem]
restart_file_base = first_stage_restart1_checkpoint_cp/0028
# Initial condition for T overrides the restart
allow_initial_conditions_with_restart = true
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_new_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 38974.7 38974.7'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 1.9e+19 1.9e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 32000 32000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '295 295 295 295 295 295 295 295 593.58 606.36 619.13 630.26 640.87 651.76 662.67 673.67'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 25000000
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_75MW_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
# This file was created using BIF with the following inputs:
# FK05/FK05.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/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/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
[]
(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/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
[]
(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
[]
[]
(test/tests/sifgrs/uo2/ad_chromia_doped.i)
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 2.2e7'
y = '300. 2500.'
scale_factor = 1
[]
[Fiss_func]
type = PiecewiseLinear
x = '0 2.2e7'
y = '1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 300
[]
[]
[AuxVariables]
[fission_rate]
initial_condition = 1.e19
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_end'
[]
[eff_diffusion_coefficient]
type = ADMaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = 'initial timestep_end'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
skip_bdr_model = true
eff_diff_coeff_option = BULK
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
start_time = 0.0
num_steps = 22
dt = 1e6
[]
[Postprocessors]
[temperature]
type = FunctionValuePostprocessor
function = Temp_func
execute_on = 'initial timestep_end'
[]
[fission_rate]
type = FunctionValuePostprocessor
function = Fiss_func
execute_on = 'initial timestep_end'
[]
[diffusion_coefficient]
type = ElementalVariableValue
elementid = 0
variable = eff_diff_coeff
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
execute_on = 'initial timestep_end'
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
exodus = true
[console]
type = Console
output_linear = true
max_rows = 23
[]
[]
(assessment/LWR/validation/Super_Ramp/analysis/Super_Ramp_Base.i)
#This is a partial input file base with information/features common to several experiments within this assessment
#NOTE: This file will NOT run on its own, it requires a PK#X.params file and a PK##.params file to run
# physical constants
R = 8.3143 # (J/K*mol) -- THIS SHOULD BE EDITED TO USE PHYSICALCONSTANTS' VALUE
# fuel isotope fractions and fission energy
energy_per_fission = 3.28451e-11 # (J/fission)
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# rod geometry
clad_bot_gap_height = 1.0e-3 # (m)
# variable and kernel initial values
initial_temperature = 293.15 # (K)
gravity_constant = -9.81 # (m/s^2)
# fuel/cladding contact
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
roughness_secondary = 1.0e-6 # (m)
roughness_primary = 2.0e-6 # (m)
roughness_coef = 3.2
jump_distance_model = LANNING
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
# plenum parameters
initial_pressure = 2.25e6 # (Pa)
startup_time = 0 # (s)
# fuel/clad material properties
fuel_cracking_stress = 1.68e8
stress_free_temperature = 293.15 # (K)
clad_density = 6550.0 # (kg/m^3)
# numerical options
l_max_its = 100
l_tol = 1e-4
nl_max_its = 30
start_time = 0.0 # s
dtmin = 1.0 # s
[GlobalParams]
density = ${fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
initial_porosity = ${initial_fuel_porosity}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = ${number_pellets}
pellet_height = ${pellet_height}
pellet_outer_radius = ${pellet_outer_radius}
pellet_mesh_density = customize
nx_p = 11
ny_p = 84
clad_mesh_density = customize
nx_c = 4
ny_c = 84
clad_gap_width = ${clad_gap_width}
clad_thickness = ${clad_thickness}
clad_bot_gap_height = ${clad_bot_gap_height}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
clad_top_gap_height = ${clad_top_gap_height}
ny_cu = 3
ny_cl = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_power_factors]
type = PiecewiseBilinear
data_file = ${axial_power_factors_data_file}
axis = 1
[]
[clad_out_temp]
type = PiecewiseLinear
data_file = ${clad_out_temp_data_file}
format = columns
[]
[axial_temp_factors]
type = PiecewiseBilinear
data_file = ${axial_temp_factors_data_file}
axis = 1
[]
[clad_temp_bc]
type = CompositeFunction
functions = 'clad_out_temp axial_temp_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = ${coolant_pressure_data_file}
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
format = columns
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = ${initial_grain_radius}
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = ${initial_fuel_porosity}
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
temperature = temperature
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
temperature = temperature
add_variables = true
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = ${gravity_constant}
block = '1 3'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temperature
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[porosity]
type = PorosityAuxUO2
block = pellet
variable = porosity
execute_on = linear
[]
[pelletid]
type = PelletIdAux
block = pellet
variable = pellet_id
fuel_pin_geometry = pin_geometry
number_pellets = ${number_pellets}
execute_on = initial
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = ${friction_coefficient}
c_normal = ${c_normal}
c_tangential = ${c_tangential}
tangential_lm_scaling = ${tangential_lm_scaling}
normal_lm_scaling = ${normal_lm_scaling}
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = ${roughness_secondary}
roughness_primary = ${roughness_primary}
roughness_coef = ${roughness_coef}
plenum_pressure = plenum_pressure
jump_distance_model = ${jump_distance_model}
contact_pressure = ${contact_pressure}
thermal_lm_scaling = ${thermal_lm_scaling}
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = 5
outer_surfaces = 10
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_pressure}
startup_time = ${startup_time}
R = ${R}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = ${fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
density = ${fuel_density}
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
burnup_function = burnup
initial_grain_radius = ${initial_grain_radius}
[]
[fuel_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = ${fuel_cracking_stress}
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
hydrostatic_stress = hydrostatic_stress
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
res_param_option = HETEROGENEOUS_WHITE
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${clad_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
fuel_pin_geometry = pin_geometry
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ${petsc_options_value}
line_search = 'none'
verbose = true
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = 1
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = ${optimal_iterations}
iteration_window = ${iteration_window}
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temperature
nodeid = 3110 #Mesh dependent!
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[midplane_hoop_strain_inner_clad]
type = ElementalVariableValue
elementid = 209 # Mesh dependent
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[midplane_hoop_stress_inner_clad]
type = ElementalVariableValue
elementid = 209 # Mesh dependent
variable = hoop_stress
execute_on = 'initial timestep_end'
[]
[midplane_contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 3141 # Mesh dependent
execute_on = 'initial timestep_end'
[]
[total_rod_integral_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[total_rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${scale_factor}
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[midplane_clad_outer_temp]
type = NodalVariableValue
nodeid = 757 # Mesh dependent
variable = temperature
[]
[midplane_clad_inner_temp]
type = NodalVariableValue
nodeid = 747 # Mesh dependent
variable = temperature
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = false
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fission_gas_released_percentage central_fuel_temp midplane_contact_pressure'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[pbz]
type = PelletBrittleZone
block = pellet
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = ${number_pellets}
execute_on = 'initial linear'
[]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
[]
(assessment/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
[]
(assessment/MOX/JOYO/MK-II/analysis/MK-II_master_new_bubble_gb_lim.i)
initial_fuel_density = 10920.4
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.07
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.55
pellet_outer_radius = 0.002315
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000085
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.549
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 10
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 48827.8 48827.8'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 2.6e+19 2.6e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12970000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 40000 40000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12970000'
z = '295 295 295 295 295 295 295 295 416.36 422.49 428.63 434.27 439.36 444.71 450.07 455.48'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00463
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10920.4
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 12970000
dtmax = 5e5
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.55 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-II_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(examples/multiapp/pin2.i)
## In this example the multiapp system is called to run another BISON simulation.
## (input1.i calls input2.i) An application of this might be multiple fuel pins
## in an assembly. This example also demonstrates the internal mesh maker.
initial_fuel_density = 10200
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
a_lower = 0.06951
a_upper = 3.72711
initial_porosity = 0.04
[]
# ==================================================== #
# Mesh (and Geometry, internally-meshed)
# ==================================================== #
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.0005
pellet_outer_radius = 0.0041
clad_bot_gap_height = 0.00152
clad_top_gap_height = 0.16
pellet_quantity = 1
pellet_height = 3.6576
clad_gap_width = 8.0e-05
bottom_clad_height = 0.0167
top_clad_height = 0.0167
nx_p = 6 # number of radial elements in the fuel
ny_p = 48 # number of axial elements in the fuel
nx_c = 3 # number of elements in the clad thickness
ny_c = 48 # number of elements in the axially in the clad
ny_cu = 1
ny_cl = 1
intervals = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212'
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 10
patch_update_strategy = auto
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 493
[]
# ==================================================== #
# Dimensions and Primary Variables
# ==================================================== #
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 3.000000e+02
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
# ==================================================== #
# Auxiliary Variables
# ==================================================== #
[AuxVariables]
# ================================================== #
# Nodal Quantities
# ================================================== #
[htcl]
initial_condition = 500.0
[]
[htcv]
initial_condition = 0.0
[]
[Tl]
initial_condition = 565.0
[]
[Tv]
initial_condition = 565.0
[]
[burnup]
block = 3
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.240000e-06
[]
# ================================================== #
# Constant Monomial Quantities (Non-Mechanics)
# ================================================== #
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[axial_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[axial_burnup]
order = CONSTANT
family = MONOMIAL
[]
[axial_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.04
[]
[]
# ==================================================== #
# Time- and Space-Dependent Source and BCs
# ==================================================== #
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
x = '-100 0 5000'
y = '0 0 25000'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_temperature]
type = PiecewiseLinear
x = '-100 0'
y = '293 565'
axis = y
[]
[coolant_pressure_ramp]
# used in coolantPressure BC
type = PiecewiseLinear
scale_factor = 1
x = '0 10000.0'
y = '0 1.0'
[]
[]
# ==================================================== #
# Burnup Equation Set
# ==================================================== #
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '3.100e-02 9.690e-01'
RPF = RPF
[]
[]
# ==================================================== #
# Primary Kernels used in Heat Transfer
# ==================================================== #
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
extra_vector_tags = 'ref'
block = 3
[]
[]
[AuxKernels]
# ================================================== #
# Pre-Defined Types
# ================================================== #
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
factor = 1.27e+14 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = linear
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
# ================================================== #
# Other General Types
# ================================================== #
[axial_burnup]
type = SpatialUserObjectAux
block = 3
variable = axial_burnup
user_object = axial_burnup
execute_on = timestep_begin
[]
[axial_temperature]
type = SpatialUserObjectAux
block = 3
variable = axial_temperature
user_object = axial_temperature
execute_on = timestep_begin
[]
[]
# ==================================================== #
# Mechanical and Thermal Contact
# ==================================================== #
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
normal_smoothing_distance = 0.1
model = frictionless
formulation = Kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.200000e+00
roughness_primary = 1.8e-06
roughness_secondary = 8e-07
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 0.0001
normal_smoothing_distance = 0.1
order = FIRST
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[convective_clad_surface_bottom]
type = ConvectiveFluxBC
boundary = '1 2 3'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 565.0
final = 585.0
duration = 1.0e4 #duration of initial power ramp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.55132e+07
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
# ==================================================== #
# Specification of Material Properties
# ==================================================== #
[Materials]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
diameter = 0.008192
diametral_gap =0.000168
# Average burnup at which fuel comes into contact with clad at 25kW/m
burnup_relocation_stop = 0.0315
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10200.0
eigenstrain_name = fuel_volumetric_strain
total_densification = 0.01
[]
[fission_gas_release]
type = UO2Sifgrs
axial_power_profile = axial_peaking_factors
block = 3
burnup = burnup
fission_rate = fission_rate
hydrostatic_stress = hydrostatic_stress
grain_radius = grain_radius
pellet_brittle_zone = pbz
pellet_id = pellet_id
rod_ave_lin_pow = linear_heat_rate_profile
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 7833
[]
[]
# ==================================================== #
# User Objects for Output Processing
# ==================================================== #
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.0041
number_pellets = 1
execute_on = linear
[]
[averagefissionrate]
type = LayeredAverage
block = 3
variable = fission_rate
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[average_temp]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[averagebu]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[casl_average_fission_rate]
variable = fission_rate
type = LayeredAverage
block = 3
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[surface_temp]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[axial_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[integral_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[average]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_surface_temperature]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[rod_avg_fast_fluence]
type = LayeredSideAverage
boundary = 2
variable = fast_neutron_fluence
direction = y
num_layers = 1
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[casl_clad_surface_heat_flux]
type = LayeredSideDiffusiveFluxAverage
variable = temp
boundary = 2
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
diffusivity = thermal_conductivity
execute_on = timestep_begin
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 293
[]
[]
# ==================================================== #
# Solver Options
# ==================================================== #
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
verbose = true
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
# ================================================== #
# Time Step Control
# ================================================== #
start_time = -100
end_time = 5e6
dtmin = 0.1
dtmax = 1e6
dt = 10
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 1000
time_t = '0 1.0e4 53200 1.0e5'
time_dt = '1.0e3 1.0e3 1.0e3 1.0e5'
[]
[]
[Postprocessors]
# ================================================== #
# Required for Fission Gas Release Models
# ================================================== #
[ave_temp_interior]
# used to compute temperature of plenum
type = SideAverageValue
boundary = 9
variable = temp
outputs = exodus
execute_on = 'initial linear'
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[gas_volume]
type = InternalVolume
boundary = 9
outputs = exodus
execute_on = 'initial linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# ==================================================== #
# Location and format of output
# ==================================================== #
[Outputs]
perf_graph = true
exodus = true
file_base = pin2_output
time_step_interval = 1
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
(test/tests/sifgrs/uo2/polypole2.i)
# This input is to test polypole-2 for UO2Sifgrs
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[temperature_function]
type = ParsedFunction
expression = '1700'
[]
[fission_rate_function]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = '1 2'
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = temperature
fission_rate = fission_rate
ig_diff_algorithm = POLYPOLE2
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra gas_concentration_matrix_intra deltav_v0_intra_total'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
l_tol = 1e-12
nl_abs_tol = 5e-16
nl_rel_tol = 1e-17
start_time = 0.0
num_steps = 50
dt = 3e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
exodus = true
csv = 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/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
[]
(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
[]
(test/tests/sifgrs/uo2/ad_mechanistic_igmodel.i)
# @Requirement F2.40
# This test is for evaluating the mechanistic model for the intra-granular fission gas behavior and bubble evolution in the Sifgrs fission gas model.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = ADMaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = ADMaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = ADMaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
initial_porosity = 0.0
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 0
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE067/UFE067.i)
################################################################################
#
# Description: Calvert Cliffs UFE067
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file UFE067_power.csv
# axial peaking factor file UFE067_axial_peaking.csv
# flux boundary condition file UFE067_fast_flux.csv
#
################################################################################
initial_fuel_density = 10396.59
[GlobalParams]
density = ${initial_fuel_density} #94.75 %TD Assume TD = 10972.65 kg/m3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.30013
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = UFE067_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = UFE067_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 141158832 141159192'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 141158832 141159192'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = UFE067_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx '
'strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy '
'creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0398 .9602 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 60
l_tol = 8e-3
nl_max_its = 80
nl_rel_tol = 1e-4
nl_abs_tol = 1e-7
start_time = -100
end_time = 141159192
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage '
'maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(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
[]
[]
(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/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/sifgrs/uo2/ad_ig_bubble_coarsening.i)
# This test is veryfing the implementation of the intragranular coarsening capability in Sifgrs.
# The results have been benchmarked to a stand-alone implementation of the model.
# The resulting amount of intragranular swelling can feed the thermomechanical analysis
# using the swelling model SIFGR_IG in the constitutive relation block.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '600. 600. 1450. 2300. 2300. 600.'
[]
[Fiss_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '1.e19 1.e19 1.e19 1.e19 1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 600.
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_intra_total]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = ADMaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'linear'
[]
[rad_bbl]
type = ADMaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'linear'
[]
[gascnc_bbl]
type = ADMaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'linear'
[]
[bbl_cnc_disl]
type = ADMaterialRealAux
variable = bbl_disl_grn
property = bubble_concentration_intra_dislocation
execute_on = 'linear'
[]
[rad_bbl_disl]
type = ADMaterialRealAux
variable = rad_bbl_disl_grn
property = bubble_radius_intra_dislocation
execute_on = 'linear'
[]
[gascnc_bbl_disl]
type = ADMaterialRealAux
variable = gas_bbl_disl_grn
property = gas_concentration_bubble_intra_dislocation
execute_on = 'linear'
[]
[dvv0gr]
type = ADMaterialRealAux
variable = deltav_v0_intra_total
property = deltav_v0_intra_total
execute_on = 'linear'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 0
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_D3
res_param_option = HETEROGENEOUS_SETYAWAN
ig_bubble_coarsening = WITH_COARSENING
ig_diff_algorithm = POLYPOLE1
nuclerate_scalef = 0.5
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = -100
end_time = 60704600.
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
iteration_window = 4
growth_factor = 2.
linear_iteration_ratio = 100
time_t = '0 6.0e+7 6.07e7 60704600'
time_dt = '1000 10000 100 1'
force_step_every_function_point = true
timestep_limiting_function = Temp_func
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 0
[]
[radius_bubbles_at_dislocations]
type = ElementAverageValue
variable = rad_bbl_disl_grn
block = 0
execute_on = TIMESTEP_END
[]
[density_bbl_dislocations]
type = ElementAverageValue
variable = bbl_disl_grn
block = 0
execute_on = TIMESTEP_END
[]
[intrag_swelling]
type = ElementAverageValue
variable = deltav_v0_intra_total
block = 0
execute_on = TIMESTEP_END
[]
[]
[Outputs]
exodus = true
[]
(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'
[]
[]
(test/tests/sifgrs/uo2/ad_vacancies_assisting_atom_diff.i)
# This input file is used to test the mechanistic description of
# the number of vacancies that assist Xe diffusion based on lower
# length scale simulations, with AD.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 5
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[temperature_kernel]
type = NullKernel
variable = temperature
[]
[]
[ICs]
[temperature_ic]
type = FunctionIC
variable = temperature
function = '800.0+(2700.0-800.0)*x'
[]
[]
[Problem]
solve = false
[]
[AuxVariables]
[fission_rate]
initial_condition = 1e19
[]
[]
[Materials]
[fission_gas_behavior]
type = ADUO2Sifgrs
temperature = temperature
fission_rate = fission_rate
outputs = all
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_D3
vacancies_assisting_gas_diffusion_option = COOPER2024
[]
[]
[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 = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1000000
num_steps = 1000
dtmax = 5e5
dtmin = 0.1
[]
[Postprocessors]
[temperature_low_T]
type = PointValue
variable = temperature
point = '0.0 0 0'
[]
[temperature_mid_T]
type = PointValue
variable = temperature
point = '0.5 0 0'
[]
[temperature_high_T]
type = PointValue
variable = temperature
point = '1.0 0 0'
[]
[pressure_bubble_GB_low_T]
type = PointValue
variable = bubble_GB_pressure
point = '0.0 0 0'
[]
[pressure_bubble_GB_mid_T]
type = PointValue
variable = bubble_GB_pressure
point = '0.5 0 0'
[]
[pressure_bubble_GB_high_T]
type = PointValue
variable = bubble_GB_pressure
point = '1.0 0 0'
[]
[atom_per_bubble_GB_low_T]
type = PointValue
variable = atom_per_bubble_GB
point = '0.0 0 0'
[]
[atom_per_bubble_GB_mid_T]
type = PointValue
variable = atom_per_bubble_GB
point = '0.5 0 0'
[]
[atom_per_bubble_GB_high_T]
type = PointValue
variable = atom_per_bubble_GB
point = '1.0 0 0'
[]
[vacancy_per_bubble_GB_low_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '0.0 0 0'
[]
[vacancy_per_bubble_GB_mid_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '0.5 0 0'
[]
[vacancy_per_bubble_GB_high_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '1.0 0 0'
[]
[vacancy_per_atom_bubble_GB_low_T]
type = PointValue
variable = vacancy_per_atom_bubble_GB
point = '0.0 0 0'
[]
[vacancy_per_atom_bubble_GB_mid_T]
type = PointValue
variable = vacancy_per_atom_bubble_GB
point = '0.5 0 0'
[]
[vacancy_per_atom_bubble_GB_high_T]
type = PointValue
variable = vacancy_per_atom_bubble_GB
point = '1.0 0 0'
[]
[volume_bubble_GB_low_T]
type = PointValue
variable = bubble_GB_volume
point = '0.0 0 0'
[]
[volume_bubble_GB_mid_T]
type = PointValue
variable = bubble_GB_volume
point = '0.5 0 0'
[]
[volume_bubble_GB_high_T]
type = PointValue
variable = bubble_GB_volume
point = '1.0 0 0'
[]
[]
[Outputs]
csv = true
time_step_interval = 300
[]
(test/tests/element_integral_power/ad_fission_gas_sifgrs_1D.i)
# Tests the ElementIntegralPower postprocessor
#
# A constant volumetric fission rate of 3.125e18 fissions/m^3-s is applied to a RZ cylinder
# having an inner radius of 0.01 m, outer radius of 0.0114818 m and height of 0.01 m.
# The power is thus constant with magnitude:
#
# Power = Fdot * Energy_per_fission * Volume
# = 3.125e18 * 3.2e-11 * Pi*(0.0114818^2 - 0.01^2) * 0.01
# = 100
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
fuel_height = 0.01
include_clad = false
include_plenum = false
slices_per_block = 1
pellet_bottom_coor = 0
pellet_outer_radius = 0.011481768
pellet_inner_radius = 0.01
clad_gap_width = 0
clad_thickness = 0
elem_type = EDGE2
pellet_mesh_density = customize
nx_p = 1
[]
[]
[Functions]
[unity]
type = ParsedFunction
expression = '1.0'
[]
[]
[Variables]
[temp]
initial_condition = 500.0
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 3.125e18
fission_rate_function = unity
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[left_T]
type = ADDirichletBC
variable = temp
boundary = 13
value = 500.0
[]
[]
[Materials]
[fuel]
type = ADHeatConductionMaterial
block = fuel
thermal_conductivity = 10
specific_heat = 100
[]
[density]
type = ADParsedMaterial
block = fuel
property_name = density
expression = 10000
[]
[fission_gas_release]
type = ADUO2Sifgrs
temperature = temp
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = -pc_factor_shift_type
petsc_options_value = nonzero
start_time = 0.0
num_steps = 2
dt = 1.0e6
nl_abs_tol = 1e-8
[]
[Postprocessors]
[fis_gas_generated]
type = ADLayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = ADLayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_grain]
type = ADLayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_boundary]
type = ADLayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[]
[Outputs]
exodus = true
[]
(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'
[]
[]
(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/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/sifgrs/uo2/negative_temperature_exception.i)
# This test ensures that the moose exception to cut the timestep when a
# negative temperature is detected in UO2Sifgrs is properly executed.
[Mesh]
[square]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 2'
y = '300 -100.0'
[]
[Fiss_func]
type = ConstantFunction
value = 1e19
[]
[]
[Variables]
[T]
initial_condition = 800.0
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[all_T]
type = FunctionDirichletBC
variable = T
function = temperature_func
boundary = 'bottom right left top'
[]
[]
[Materials]
[fission_gas_release]
type = UO2Sifgrs
temperature = T
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 2
dt = 2
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'dt = 1'
execute_on = timestep_end
[]
[]
[Outputs]
csv = true
[]
(test/tests/sifgrs/uo2/ad_scidac_resolution.i)
# @Requirement F2.40
# This test is for evaluating the mechanistic model for the intra-granular fission gas behavior,
# considering the re-solution parameter as proposed by Setyawan et al. 2018 JoAP
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = ADMaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = ADMaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = ADMaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 0
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
res_param_option = HETEROGENEOUS_SETYAWAN
initial_porosity = 0.0
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 0
[]
[bubble_density]
type = ElementAverageValue
block = 0
variable = bbl_grn_3
execute_on = TIMESTEP_END
[]
[bubble_radius]
type = ElementAverageValue
block = 0
variable = rad_bbl_grn
execute_on = TIMESTEP_END
[]
[]
[Outputs]
exodus = true
[]
(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/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
[]
(test/tests/sifgrs/uo2/percolation.i)
# This test is to verify that the optional check for a path to a free surface for gas release works correctly.
# When the optional percolation AuxVariable is supplied to Sifgrs, gas release is not allowed unless
# that variable is > 0.5 locally. The PercolationUserObject checks whether each position is connected
# to a free surface and sets the AuxVariable accordingly.
# In this test, the gas released should be nearly the same as the sifgrs_second_stage test.
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[free1]
type = SideSetsAroundSubdomainGenerator
new_boundary = free1
normal = '1 0 0'
block = 1
input = mesh
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1400
[]
[]
[AuxVariables]
[fission_rate]
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
# percolation AuxVariables
[open_coverage]
order = CONSTANT
family = MONOMIAL
[]
[open_threshold]
order = CONSTANT
family = MONOMIAL
[]
[open]
order = CONSTANT
family = MONOMIAL
[]
[cluster]
order = CONSTANT
family = MONOMIAL
[]
[percolated]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial linear'
[]
# percolation auxkernels
[open_coverage]
type = MaterialRealAux
variable = open_coverage
property = GBCoverage
[]
[open_threshold]
type = MaterialRealAux
variable = open_threshold
property = sat_coverage
[]
[open]
type = ParsedAux
variable = open
coupled_variables = 'open_coverage open_threshold'
expression = 'open_coverage-open_threshold'
[]
[cluster]
type = FeatureFloodCountAux
variable = cluster
execute_on = 'timestep_begin'
field_display = UNIQUE_REGION
flood_counter = percolate
[]
[percolated]
type = PercolationAux
variable = percolated
execute_on = 'timestep_begin'
percolation = percolate
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
percolation_to_surface = percolated
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
end_time = 5e7
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[UserObjects]
[percolate]
type = PercolationUserObject
execute_on = 'timestep_begin'
boundaries = 'free1'
variable = open
threshold = 0.0
[]
[]
[Outputs]
exodus = 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/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4_GrainGrowth.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
bubble_gb_limit = 1.0e+11
diff_coeff_option = TURNBULL_D1_4D2_4D3
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_DiffCoeff4_GrainGrowth_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/Tribulation/analysis/BN1X4/BN1X4.i)
initial_fuel_density = 10373
[GlobalParams]
density = ${initial_fuel_density} # 94.747 % TD assuming TS 10980
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
initial_porosity = 0.05526
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9976
pellet_outer_radius = 0.00402
pellet_mesh_density = customize
nx_p = 11
ny_p = 243
clad_bot_gap_height = 0.001
clad_gap_width = 100.0e-6
clad_thickness = 0.00063
clad_mesh_density = customize
nx_c = 4
ny_c = 249
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.0934
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = 3
initial_condition = 8.58e-6 # 2D grain radius 11e-6/2*1.56
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseBilinear
data_file = BN1X4_power.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 34462368 34548768 34635168 90055584 90141984'
y = '0.0073804 1 1 0.0073804 1 1 0.0073804'
[]
[flux]
type = PiecewiseBilinear
data_file = BN1X4_fast_flux.csv
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = BN1X4_clad_temp.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[timestep_function]
type = PiecewiseLinear
data_file = BN1X4_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0825 0.9175 0 0 0 0'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 0.3e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 13.729e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.96133e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.025
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10373
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = NO_TRANSIENT
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 90141984
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 20
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = timestep_function
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[fuel_max_temp]
type = ElementExtremeValue
block = 3
variable = temp
[]
[fuel_average_temp]
type = ElementAverageValue
block = 3
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage fuel_average_temp'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(test/tests/meso_thcond_test/sifgrs_swelling_fissiongas.i)
# This test is for the fuel swelling and porosity computation in the Sifgrs
# fission gas behavior model for UO2 (UO2Sifgrs).
# 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'
volumetric_locking_correction = true
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube_111.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = 1400.
[]
[Fiss_func]
type = ParsedFunction
expression = 1.e19
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1400.
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[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
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[intra_porosity]
order = CONSTANT
family = MONOMIAL
[]
[gas_atom_conc]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
[]
[GBresistance]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
order = CONSTANT
family = MONOMIAL
initial_condition = 5e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[brnp]
type = BurnupAux
variable = burnup
block = 1
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[por]
type = PorosityAuxUO2
block = 1
variable = porosity
execute_on = linear
[]
[rho]
type = MaterialRealAux
variable = density
property = density
execute_on = 'initial timestep_end'
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
[]
[thcond]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[GBCoverage]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial timestep_end'
[]
[intra_porosity]
type = MaterialRealAux
variable = intra_porosity
property = intra_porosity
[]
[gas_atom_conc]
type = MaterialRealAux
variable = gas_atom_conc
property = gas_atom_conc
[]
[deltav_v0_dn]
type = MaterialRealAux
variable = deltav_v0_dn
property = densification
[]
[deltav_v0_sl]
type = MaterialRealAux
variable = deltav_v0_sl
property = solid_swelling
[]
[rad_bbl_bdr]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = 'initial timestep_end'
[]
[GBresistance]
type = MaterialRealAux
variable = GBresistance
property = GBresistance
execute_on = 'initial timestep_end'
[]
# [grain_radius]
# type = GrainRadiusAux
# variable = grain_radius
# temperature = temp
# []
[]
[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]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = 1
burnup = burnup
temperature = temp
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1400.0
eigenstrain_name = fuel_thermal_strain
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 10417.0
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 1
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.05
[]
[fuel_thermal_meso]
type = UO2FissionGasThermal
block = 1
temperature = temp
burnup = burnup
grain_radius = 5e-6
[]
[]
[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
block = 1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 1
[]
[GBCov]
type = ElementalVariableValue
variable = GBCoverage
elementid = 0
execute_on = 'initial timestep_end'
[]
[gas_atom_conc]
type = ElementalVariableValue
variable = gas_atom_conc
elementid = 0
[]
[thcond]
type = ElementalVariableValue
variable = thermal_conductivity
elementid = 0
execute_on = 'initial timestep_end'
[]
[intra_porosity]
type = ElementalVariableValue
variable = intra_porosity
elementid = 0
[]
[rad_bbl_bdr]
type = ElementalVariableValue
variable = rad_bbl_bdr
elementid = 0
execute_on = 'initial timestep_end'
[]
[GBresistance]
type = ElementalVariableValue
variable = GBresistance
elementid = 0
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
file_base = fissiongas
csv = true
[exodus]
type = Exodus
[]
[]
(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
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_old_bubble_gb_lim.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_old_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_191_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.021861442
pellet_height = 0.265388558
pellet_quantity = 1
clad_bot_gap_height = 0.01275
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 166755600 166842000'
y = '0.006537 1 1 0.006537'
scale_factor = 15.5e6
[]
[clad_surface_temperature]
type = PiecewiseBilinear
axis = 1
data_file = clad_temperature.csv
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 166842000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 166842000
refab_pressure = 11e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[clad_temp]
type = FunctionDirichletBC
function = clad_surface_temperature
variable = temperature
boundary = 2
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
# [terminator]
# type = Terminator
# expression = 'burst > 0'
# []
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.0095 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
rod_ave_lin_pow = power_history
temperature = temperature
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# n_startup_steps = 1
end_time = 166843509.6
dtmax = 20
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(test/tests/standard_lwr_outputs_action/mini_complete_rod.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 2
pellet_mesh_density = coarse
clad_mesh_density = coarse
plenum_fuel_ratio = 0.177033
[]
[]
[Variables]
[temperature]
initial_condition = 580.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0.000000 10800'
y = '0.000000 16404.200000' #LHR5
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800'
z = '1.0 1.0 1.0 1.0'
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
scale_factor = 1
x = '0 10800.0'
y = '0.00651 1.0'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = finite
[]
[clad]
block = clad
add_variables = true
strain = finite
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 6
num_axial = 2
a_lower = 0.00351
a_upper = 0.02723
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
output_initial_moles = initial_moles
temperature = plenum_temperature ## generated by the standard outputs action
volume = plenum_volume ## generated by the standard outputs action
material_input = fission_gas_released ## generated by the standard outputs action
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
gbs_model = false
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 200
dtmax = 200
dtmin = 200
[]
[StandardLWRFuelRodOutputs]
rod_component = both
fuel_pellet_blocks = pellet
[]
[Outputs]
exodus = false
color = false
csv = true
perf_graph = true
[]
(assessment/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
[]
(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/MOX/JOYO/B14/PTM010/analysis/b14_ptm010_2DRZ_t.i)
initial_fuel_density = 10964.6
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.002675
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000105
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.143
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00535
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.99
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10964.6
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
automatic_scaling = true
compute_scaling_once = false
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm010_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/sifgrs/uo2/scidac_resolution.i)
# @Requirement F2.40
# This test is for evaluating the mechanistic model for the intra-granular fission gas behavior,
# considering the re-solution parameter as proposed by Setyawan et al. 2018 JoAP
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
res_param_option = HETEROGENEOUS_SETYAWAN
initial_porosity = 0.0
[]
[]
[Executioner]
type = Transient
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[bubble_density]
type = ElementAverageValue
variable = bbl_grn_3
[]
[bubble_radius]
type = ElementAverageValue
variable = rad_bbl_grn
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM073/BFM073.i)
################################################################################
#
# Description: Calvert Cliffs BFM073
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM073_power.csv
# axial peaking factor file BFM073_axial_peaking.csv
# flux boundary condition file BFM073_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31914
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM073_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM073_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179191453 179191813'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179191453 179191813'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM073_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179191813
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/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/sifgrs/uo2/ad_polypole2.i)
# @Requirement F2.40
# This test is for evaluating the PolyPole-2 algorithm (for the intra-granular diffusion calculation)
# in the Sifgrs fission gas behavior model.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(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
[]
[]
(test/tests/sifgrs/uo2/transient_model.i)
# This is a test for the transient capability included in the Sifgrs fission gas behavior model.
# This transient treatment accounts for the rapid gas release from the grain boundaries due
# to micro-cracking during temperature transients. The effect of micro-cracking is interpreted
# as a reduction of the gas storing capacity of grain boundaries during transients,
# effectively leading to an increase of FGR and to a corresponding decrease of fission gas swelling.
# The fraction of cracked grain surface is described by a temperature-dependent sigmoid function,
# which reproduces the experimentally observed kinetics of gas release during both heating and
# cooling transients.
# The transient is composed of 5 phases:
# 1. build up of fission gases and burnup accummulation at constant temperature
# 2. heat up representative of a transient (micro-cracking during heating)
# 3. constant high temperature (healing)
# 4. cool down representative of a transient (micro-cracking during cooling)
# 5. constant low temperature (healing)
# The calculated FGR rapidly increases during the transients, and the fission gas swelling decreases correspondingly.
# This test can be adapted using transient_option = MICROCRACKING_BURNUP in UO2Sifgrs.
# The resulting test leverages the option for considering a burnup-dependent central temperature, which accounts
# for the gradual weakening of grain boundaries due to irradiation-created defects.
end_buildup_time = 1e6 # s
heating_duration = 500 # s
stable_duration = 2e5 # s
cooling_duration = 500 # s
healing_duration = 3e5 # s
end_heating_time = ${fparse end_buildup_time + heating_duration} # s
end_stable_time = ${fparse end_heating_time + stable_duration} # s
end_cooling_time = ${fparse end_stable_time + cooling_duration} # s
end_healing_time = ${fparse end_cooling_time + healing_duration} # s
temperature_low = 1000. # K
temperature_high = 2300. # K
dt_large = 1e4 # s
dt_small = 1e2 # s
[GlobalParams]
displacements = 'disp_x'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0. ${end_buildup_time} ${end_heating_time} ${end_stable_time} ${end_cooling_time} ${end_healing_time}'
y = '${temperature_low} ${temperature_low} ${temperature_high} ${temperature_high} ${temperature_low} ${temperature_low}'
[]
[fission_rate_function]
type = ParsedFunction
expression = '1e21'
[]
[]
[Variables]
[temperature]
initial_condition = 1000.
[]
[disp_x]
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[sat_coverage]
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 = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[burnup]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = 1
preset = false
[]
[x]
type = DirichletBC
variable = disp_x
boundary = 'left right'
value = 0
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = temperature
fission_rate = fission_rate
burnup = burnup
effdiffcoeff_scalef = 1e2 # artificially increases intragranular diffusion to increase GB content
transient_option = MICROCRACKING
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra gas_concentraion_matrix_intra gas_concentration_GB_bubble_volume deltav_v0_intra_total'
outputs = 'all'
[]
[density]
type = StrainAdjustedDensity
strain_free_density = 10417.
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
temperature = temperature
burnup = burnup
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-12
nl_abs_tol = 1e-40
nl_rel_tol = 1e-17
start_time = 0.
end_time = ${end_healing_time}
dtmax = 1e5
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e5
optimal_iterations = 10
iteration_window = 4
growth_factor = 1
linear_iteration_ratio = 100
time_t = '0 ${end_buildup_time} ${end_heating_time} ${end_stable_time} ${end_cooling_time}'
time_dt = '${dt_large} ${dt_small} ${fparse 10*dt_small} ${dt_small} ${fparse 20*dt_small}'
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_bubble_inter]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume
[]
[gas_amount_matrix_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[gas_amount_material]
type = SumPostprocessor
values = 'gas_amount_matrix_intra gas_amount_bubble_intra gas_amount_bubble_inter'
[]
[bubble_amount_intra]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[bubble_amount_volume_inter]
type = ElementIntegralMaterialProperty
mat_prop = bubble_GB_volume_density
[]
[bubble_amount_surface_inter]
type = ElementIntegralMaterialProperty
mat_prop = bubble_GB_surface_density
[]
[bubble_radius_inter_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_GB
[]
[intergranular_bubble_fractional_coverage]
type = ElementIntegralMaterialProperty
mat_prop = GBCoverage
[]
[intergranular_bubble_fractional_coverage_saturation]
type = ElementIntegralMaterialProperty
mat_prop = sat_coverage
[]
[intergranular_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_bubble_GB
[]
[burnup]
type = ElementAverageValue
variable = burnup
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
csv = true
[]
(test/tests/sifgrs/uo2/ad_first_stage_restart2.i)
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = timestep_begin
[]
[FRA]
type = ADMaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
saturation_coverage = 0
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 28e6
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
file_base = ad_first_stage_out
[exodus]
type = Exodus
[]
[]
[Problem]
restart_file_base = ad_first_stage_restart1_checkpoint_cp/0028
# Initial condition for T overrides the restart
allow_initial_conditions_with_restart = true
[]
(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/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/MOX/FFTF/FO-2/L09/analysis/fftf_fo2_L09_master.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057 #1.058 - 0.001 clad_bot_gap_height
elem_type = QUAD8
nx_c = 4
ny_c = 500
nx_p = 30
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[thermal_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[conductivity]
type = MaterialRealAux
property = thermal_conductivity
variable = thermal_cond
block = pellet
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
diff_coeff_option = TURNBULL_D1_4D2_4D3
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-6
fixed_point_max_its = 1
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-4
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[VectorPostprocessors]
[clad_surface]
type = LineValueSampler
variable = temp
start_point = '3.4e-3 3.24e-3 0.0'
end_point = '3.4e-3 1.97 0.0'
num_points = 200
sort_by = y
outputs = line_plot
[]
[fuel_radial_temperature_SampleH_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.432 0.0'
end_point = '2.794e-3 0.432 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_SampleJ_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.686 0.0'
end_point = '2.794e-3 0.686 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_SampleL_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.913 0.0'
end_point = '2.794e-3 0.913 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleH_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.432 0.0'
end_point = '2.794e-3 0.432 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleJ_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.686 0.0'
end_point = '2.794e-3 0.686 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleL_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.913 0.0'
end_point = '2.794e-3 0.913 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = TIMESTEP_END
sub_cycling = false
positions_file = positions.txt
input_files = 'fftf_fo2_L09_sub.i'
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
check_multiapp_execute_on = true
execute_on = SAME_AS_MULTIAPP
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
execute_on = SAME_AS_MULTIAPP
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/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/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
[]
(test/tests/axial_relocation/uo2_dispersal_standard_lwr_output.i)
# This test is exclusively designed to test that the AxialRelocation and
# StandardLWROutputs actions can be used simultaneously.
[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
[]
[layered_average_hoop_strain]
[]
[grain_radius]
block = fuel
initial_condition = 10e-6
[]
[]
[Functions]
[power_history]
type = ParsedFunction
expression = '1000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '15000 15000'
[]
[clad_displacement_function]
type = ParsedFunction
expression = '2.0e-5 * t * sin(pi * y / 0.5)'
[]
[]
[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
generate_output = 'strain_zz'
[]
[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
generate_output = 'strain_zz'
[]
[]
[]
[]
[AuxKernels]
[layered_average_hoop_strain]
type = SpatialUserObjectAux
user_object = layered_average_hoop_strain
variable = layered_average_hoop_strain
execute_on = 'initial linear'
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[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
[]
[]
[UserObjects]
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 5
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 5
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 5
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[]
[Materials]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_thermal]
type = HeatConductionMaterial
block = fuel
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = .345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[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
[]
[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
[]
[]
[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 = 5
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
density = 10431
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power
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
[]
[]
[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'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
layered = true
fuel_pin_geometry = fuel_pin_geometry
fuel_pellet_blocks = 'fuel'
[]
[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 = 2
dt = 2
[]
[Outputs]
csv = true
exodus = 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/sifgrs/uo2/fast_mox.i)
# This test is for the application of Sifgrs to FBR MOX fuel.
# A lower limit for the grain-boundary bubble number density of 1.0e+11 bubbles/m2 is applied, which is recommended for FBR MOX simulations.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '2000'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e20'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 2000
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 2.5
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[gbswe]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = T
fission_rate = fission_rate
initial_porosity = 0.0
grain_radius_const = 8.0e-6
diff_coeff_option = TURNBULL_D1_4D2_4D3
bubble_gb_limit = 1.0e+11 #recommended value for fast MOX fuels
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 100
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
execute_on = linear
[]
[bubble_num_grain_boundary]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 0
[]
[swelling_grain_boundary]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 0
[]
[]
[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'
[]
[]
(test/tests/sifgrs/uo2/first_stage.i)
# @Requirement F2.40
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = MaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2.i)
initial_fuel_density = 10452.96
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[fuel_relo]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 172489043
end_time = 172489661
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
# axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
# hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
# end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 3.0 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
execute_on = 'initial timestep_end'
perf_graph = true
[outfile_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/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/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'
# []
[]
(test/tests/sifgrs/uo2/second_stage.i)
# @Requirement F2.40
# This test is for evaluating the second stage of the FGR process in the Sifgrs fission gas behavior model. The second stage involves the calculation of the gas behavior at grain boundaries and release to the fuel rod free volume.
# Sifgrs calculates the grain-boundary gas bubble kinetics, including bubble growth and coalescence driven by gas atoms and vacancies inflow at the bubbles, and release of a fraction of the grain-boundary gas after grain-boundary saturation. The saturation condition reads Fc = 0.5, with Fc being the fractional coverage of grain boundary surface by bubbles.
# This test is aimed at demonstrating how FGR commences upon attainment of the saturation condition (which occurs for this case after 8E+06 s), and how the saturation condition Fc = 0.5 is maintained from that moment on (see also attached file regression_tests_sifgrs.xlsx).
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1400
[]
[]
[AuxVariables]
[fission_rate]
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
end_time = 5e7
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
exodus = true
[]
(test/tests/sifgrs/uo2/option_base.i)
# This base input file is used to test the various input model options
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Problem]
solve = false
[]
[AuxVariables]
[fission_rate]
initial_condition = 2.5e19
[]
[T]
initial_condition = 1000
[]
[]
[AuxKernels]
[tempaux]
type = ParsedAux
variable = T
use_xyzt = true
expression = '1200 + 1000 * t / 50e6'
execute_on = 'TIMESTEP_BEGIN'
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
csv = true
[]
(test/tests/sifgrs/uo2/eos_yang.i)
[Mesh]
type = GeneratedMesh
dim = 1
nx = 5
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[temperature_kernel]
type = NullKernel
variable = temperature
[]
[]
[ICs]
[temperature_ic]
type = FunctionIC
variable = temperature
function = '800.0+(2700.0-800.0)*x'
[]
[]
[Problem]
solve = false
[]
[AuxVariables]
[fission_rate]
initial_condition = 1e19
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = temperature
fission_rate = fission_rate
outputs = all
grain_radius = 10.5e-06
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_4D3
eos_option = YANG
vacancies_per_atom_diffusion_function = '1.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 = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 3153600
num_steps = 3000
dtmax = 5e5
dtmin = 0.1
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# [VectorPostprocessors]
# [bubble]
# type = LineValueSampler
# sort_by = x
# start_point = '0 0 0'
# end_point = '1 0 0'
# variable = 'temp bubble_GB_vacancy_volume bubble_radius_GB bubble_GB_pressure_equilibrium bubble_GB_pressure atom_per_bubble_GB vacancy_per_bubble_GB bubble_GB_pressure_dPdV'
# num_points = 100
# []
# []
[Postprocessors]
[temp_low_T]
type = PointValue
variable = temperature
point = '0.0 0 0'
[]
[temp_mid_T]
type = PointValue
variable = temperature
point = '0.5 0 0'
[]
[temp_high_T]
type = PointValue
variable = temperature
point = '1.0 0 0'
[]
[pressure_GB_low_T]
type = PointValue
variable = bubble_GB_pressure
point = '0.0 0 0'
[]
[pressure_GB_mid_T]
type = PointValue
variable = bubble_GB_pressure
point = '0.5 0 0'
[]
[pressure_GB_high_T]
type = PointValue
variable = bubble_GB_pressure
point = '1.0 0 0'
[]
[atom_per_bubble_GB_low_T]
type = PointValue
variable = atom_per_bubble_GB
point = '0.0 0 0'
[]
[atom_per_bubble_GB_mid_T]
type = PointValue
variable = atom_per_bubble_GB
point = '0.5 0 0'
[]
[atom_per_bubble_GB_high_T]
type = PointValue
variable = atom_per_bubble_GB
point = '1.0 0 0'
[]
[vacancy_per_bubble_GB_low_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '0.0 0 0'
[]
[vacancy_per_bubble_GB_mid_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '0.5 0 0'
[]
[vacancy_per_bubble_GB_high_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '1.0 0 0'
[]
[volume_GB_low_T]
type = PointValue
variable = bubble_GB_volume
point = '0.0 0 0'
[]
[volume_GB_mid_T]
type = PointValue
variable = bubble_GB_volume
point = '0.5 0 0'
[]
[volume_GB_high_T]
type = PointValue
variable = bubble_GB_volume
point = '1.0 0 0'
[]
[dpdV_GB_low_T]
type = PointValue
variable = bubble_GB_pressure_dPdV
point = '0.0 0 0'
[]
[dpdV_GB_mid_T]
type = PointValue
variable = bubble_GB_pressure_dPdV
point = '0.5 0 0'
[]
[dpdV_GB_high_T]
type = PointValue
variable = bubble_GB_pressure_dPdV
point = '1.0 0 0'
[]
[]
[Outputs]
csv = true
time_step_interval = 300
[]
(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/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
[]
[]
(test/tests/sifgrs/uo2/first_stage_restart1.i)
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = MaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = 1
saturation_coverage = 0
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 28 #50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
[out]
type = Exodus
[]
[console]
type = Console
execute_on = 'initial failed linear nonlinear timestep_end'
[]
[checkpoint]
type = Checkpoint
num_files = 1
[]
[]
[Problem]
[]
(test/tests/sifgrs/uo2/ad_diffusion_coefficient.i)
# Analytical test for the diffusion coefficient of the Sifgrs fission gas behavior model.
#
# For the purpose of verifying the implementation of the diffusion coefficient, the BISON results are compared with an independent calculations (see attached file regression_tests_sifgrs.xlsx).
# The formulation for the diffusion coefficient adopted in the Sifgrs model is based on the formulation of Turnbull et al. (JNM 107, 168, 1982; Preston, England, September 18-22, 1988).
#
# Variable definitions
# T = temperature in K
# F = Fission rate in fissions/(m^3*s)
# k = Boltzmann constant in J/K = 1.380651e-23
# Zo = fragment influence; fission fragment range of influence in meters = 1e-9
# lf = fragment range; fission fragment travel distance before coming to rest in meters = 6e-6
#
# Equations and sample calculations
#
# Use T = 1700 K, F = 2.5e19 fission/m^3s
#
# Diffusion coefficient terms (m^2/s)
#
# D1 = intrinsic term = 7.6e-10 * exp(-4.8599e-19/kT)
# D1 = 7.73e-19
#
# D2 = enhanced vacancy term = 1.41e-25 * exp(-1.9053e-19/kT) * sqrt(F)
# D2 = 2.10e-19
#
# The purely rating dependent term D3 is neglected (see, e.g., P. Losonen JNM, 304, 29, 2002)
#
# D = single gas atom diffusion coefficient = D1 + 4*D2
# D = 1.61e-18
#
# Based on the formulation of Speight (Nuclear Science and Engineering 37, 180, 1969), include effects of intragranular trapping and resolution to compute an effective diffusion coefficient. The trapping and resolution rates are computed using relations from White and Tucker (JNM 118, p1, 1983)
#
# R = Intragranular bubble radius in m = 5e-10*(1 + 106*exp(-8703/T))
# R = 8.17e-10
#
# Radius_sum = intragranular bubble radius + fragment influence = R + Zo in m
# Radius_sum = 1.82e-09
#
# CBtot = intragranular bubble concentration in 1/m^3 = 1.52e+27 / T - 3.3e+23
# CBtot = 5.64e+23
#
# g = trapping rate = 4 * pi * R * D * CBtot
# g = 5.70e-03
#
# b = resolution rate = 3.03 * F * pi * lf * Radius_sum^2
# b = 4.71e-03
#
# Deff = effective diffusion coefficient = D*b/(b + g)
# Deff = 5.41e-19
#
# Example problem description
#
# A single hex 8 element is used to solve the heat equation with no source term. One boundary of the block is insulated while the
# boundary opposite to the insulated boundary is assigned a prescibed Dirichlet boundary condition defined by a function.
# The function increases the temperature, starting at 800 K increasing linearly to 1700 K. At the same time, the fission rate is increasing linearly from 1e19 to 2.5e19. At the final time in this calculation, Deff should equal 5.41e-19.
# See also the sheet sifgr_diffusion_coefficient of the attached file (regression_tests_sifgrs.xlsx), which plots Deff values from this calculation and independent calculations. One should be able to reproduce that plot with the results from this test.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0 1.2e7'
y = '800 1700'
scale_factor = 1
[]
[Fiss_func]
type = PiecewiseLinear
x = '0 1.2e7'
y = '1e19 2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 800.0
[]
[]
[AuxVariables]
[fission_rate]
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[diffusion_coefficient]
type = ADMaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
start_time = 0.0
num_steps = 12
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_grain]
type = ADElementIntegralFisGasGrainSifgrs
block = 1
[]
[fis_gas_boundary]
type = ADElementIntegralFisGasBoundarySifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
exodus = true
[]
(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'
[]
[]
(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/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
[]
(assessment/MOX/JOYO/B14/PTM002/analysis/b14_ptm002_2DRZ_t.i)
initial_fuel_density = 11057.75
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.002675
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000105
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1372
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00535
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.982
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 11057.75
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 12e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm002_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(examples/accident_tolerant_fuel/uo2_coated_zircaloy/uo2_coated_zircaloy.i)
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.026
pellet_height = 0.1186
pellet_quantity = 1
clad_bot_gap_height = 0
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
coating_thickness = 40e-6
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 3
ny_c = 40
nx_p = 11
ny_p = 40
nx_coating = 2
elem_type = QUAD8
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 293.0
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e4 1e8'
y = '0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '6.537e-3 1 1'
scale_factor = 15.5e6
[]
[mass_flux_func]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '3800. 3800. 3800.'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[coating]
block = coating
strain = FINITE
eigenstrain_names = 'coating_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_strain_hoop]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
scalar_type = HoopStress
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
normal_smoothing_distance = 0.1
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = pressure_ramp
inlet_massflux = mass_flux_func
rod_diameter = 9.54e-3
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
# Fuel
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
burnup_function = burnup
temperature = temperature
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
# Clad
[clad_thermal]
type = ZryThermal
temperature = temperature
block = clad
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_plasticity'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-4
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_plasticity]
type = ZryPlasticityUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6511.0
[]
# Coating
[coat_thermal]
type = ChromiumThermal
block = coating
temperature = temperature
[]
[coating_elasticity_tensor]
type = ChromiumElasticityTensor
temperature = temperature
block = coating
[]
[coat_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'coat_creep coat_plasticity'
block = coating
[]
[coat_creep]
type = ChromiumCreepUpdate
temperature = temperature
block = coating
[]
[coat_plasticity]
type = ChromiumPlasticityUpdate
temperature = temperature
block = coating
fast_neutron_fluence = 0.0
hardening_constant = 2e9
[]
[coat_thermal_expansion]
type = ChromiumThermalExpansionEigenstrain
block = coating
temperature = temperature
stress_free_temperature = 293.0
eigenstrain_name = coating_thermal_eigenstrain
[]
[density_coat]
type = StrainAdjustedDensity
block = coating
strain_free_density = 7190.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200.0
min_value = 293.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 5e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 5e5
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2.0
timestep_limiting_postprocessor = material_timestep
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[oxide_thickness]
type = ElementExtremeValue
block = clad
variable = oxide_thickness
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
csv = true
print_linear_residuals = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
(assessment/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'
[]
[]
(assessment/MOX/JOYO/B14/PTM003/analysis/b14_ptm003_2DRZ_t.i)
initial_fuel_density = 11172.82
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.00008
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1409
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.961
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
#outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.97
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 11172.82
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 11e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
automatic_scaling = true
compute_scaling_once = false
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
# variable = temp
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm003_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(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
[]
(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'
[]
[]
(test/tests/sifgrs/uo2/ig_bubble_coarsening.i)
# This test is veryfing the implementation of the intragranular coarsening capability in Sifgrs.
# The results have been benchmarked to a stand-alone implementation of the model.
# The resulting amount of intragranular swelling can feed the thermomechanical analysis
# using the swelling model SIFGR_IG in the constitutive relation block.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '600. 600. 1450. 2300. 2300. 600.'
[]
[Fiss_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '1.e19 1.e19 1.e19 1.e19 1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 600.
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_intra_total]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[bbl_cnc_disl]
type = MaterialRealAux
variable = bbl_disl_grn
property = bubble_concentration_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[rad_bbl_disl]
type = MaterialRealAux
variable = rad_bbl_disl_grn
property = bubble_radius_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl_disl]
type = MaterialRealAux
variable = gas_bbl_disl_grn
property = gas_concentration_bubble_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[dvv0gr]
type = MaterialRealAux
variable = deltav_v0_intra_total
property = deltav_v0_intra_total
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_D3
res_param_option = HETEROGENEOUS_SETYAWAN
ig_bubble_coarsening = WITH_COARSENING
ig_diff_algorithm = POLYPOLE1
nuclerate_scalef = 0.5
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = -100
end_time = 60704600.
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
iteration_window = 4
growth_factor = 2.
linear_iteration_ratio = 100
time_t = '0 6.0e+7 6.07e7 60704600'
time_dt = '1000 10000 100 1'
force_step_every_function_point = true
timestep_limiting_function = Temp_func
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[radius_bubbles_at_dislocations]
type = ElementAverageValue
variable = rad_bbl_disl_grn
[]
[density_bbl_dislocations]
type = ElementAverageValue
variable = bbl_disl_grn
[]
[intrag_swelling]
type = ElementAverageValue
variable = deltav_v0_intra_total
[]
[]
[Outputs]
exodus = true
[]
(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'
[]
[]
(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'
[]
[]
(test/tests/sifgrs/uo2/polypole1_intergranular_coarsening.i)
# This input is to test polypole-1 with intergranular model and bubble coarsening for UO2 Sifgrs
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[temperature_function]
type = ParsedFunction
expression = '1700'
[]
[fission_rate_function]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = '1 2'
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = temperature
fission_rate = fission_rate
testing_output = true
ig_diff_algorithm = POLYPOLE1
ig_bubble_model = NUCLEATION_RESOLUTION
ig_bubble_coarsening = WITH_COARSENING
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra gas_concentraion_matrix_intra bubble_concentration_intra_dislocation bubble_radius_intra_dislocation gas_concentration_bubble_intra_dislocation deltav_v0_intra_total fract_FGR_analytical'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-12
nl_abs_tol = 5e-16
nl_rel_tol = 1e-17
start_time = 0.0
num_steps = 50
dt = 5e5
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[radius_bubbles_at_dislocations]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra_dislocation
[]
[bubble_amount_dislocations]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra_dislocation
[]
[gas_amount_bubble_at_dislocations]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra_dislocation
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
exodus = true
csv = true
[]
(examples/fast_mox_sifgrs/input_single_pellet_sifgrs_mox.i)
#This input is is a simple example of FBR MOX fuel analysis.
#In this case we test the application of Sifgrs to FBR MOX using a specific setting for the lower limit of grain-boundary bubble number density.
initial_fuel_density = 10920.4
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
include_clad = false
clad_top_gap_height = 0.
pellet_quantity = 1
pellet_height = 0.01
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
nx_p = 10
ny_p = 5
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 683 #typical inlet temperature of the sodium
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '0. 35. 35. 0. '
scale_factor = 1000.
[]
[temp_surface]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '683. 1000. 1000. 683. '
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '0.3 0.5 1.8 0.3 '
scale_factor = 1.e+6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[thermal_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = bottom_central_pellet_node
value = 0.
[]
[imposed_ext_temp]
type = FunctionDirichletBC
boundary = pellet_outer_radial_surface
variable = temp
function = temp_surface
[]
[top_pellet]
variable = temp
type = NeumannBC
value = 0.
boundary = top_of_top_pellet
[]
[bottom_pellet]
variable = temp
type = NeumannBC
value = 0.
boundary = bottom_of_bottom_pellet
[]
[Pressure]
[pressure]
boundary = pellet_outer_radial_surface
function = pressure_ramp
[]
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.07
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
burnup = burnup
total_densification = 0.1e-02
initial_fuel_density = 10920.4
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 8.01e-6
diff_coeff_option = TURNBULL_D1_4D2_4D3
bubble_gb_limit = 1.0e+11 #recommended value for fast MOX fuels
[]
[]
[Preconditioning]
[SMP]
type = SMP
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 1.e-08
nl_max_its = 15
nl_rel_tol = 1.e-4
nl_abs_tol = 1.e-10
start_time = 0.
end_time = 10070000
dtmax = 5e+05
dtmin = 1.
[TimeStepper]
type = IterationAdaptiveDT
growth_factor = 3.
dt = 1.e+02
timestep_limiting_function = power_history
max_function_change = 1000.
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
variable = temp
block = pellet
execute_on = 'initial timestep_end'
[]
[burnup_ave]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_ave_MWdkgU]
type = ScalePostprocessor
value = burnup_ave
scaling_factor = 950.
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[bubble_num_grain_boundary_center]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 21
[]
[bubble_num_grain_boundary_surface]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 30
[]
[bubble_num_grain_boundary_min]
type = ElementExtremeValue
value_type = min
variable = bbl_bdr_2
block = pellet
[]
[swelling_grain_boundary_center]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 21
[]
[swelling_grain_boundary_surface]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 30
[]
[temp_fuel_center]
type = NodalVariableValue
variable = temp
nodeid = 23
[]
[temp_fuel_surface]
type = NodalVariableValue
variable = temp
nodeid = 32
[]
[_dt]
type = TimestepSize
execute_on = linear
[]
[nonlinear_its]
type = NumNonlinearIterations
execute_on = linear
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[console]
type = Console
max_rows = 15
[]
[t]
type = Checkpoint
time_step_interval = 2
num_files = 2
[]
[]
(assessment/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/MOX/JOYO/MK-II/analysis/MK-II_master_old_bubble_gb_lim.i)
initial_fuel_density = 10920.4
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.07
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.55
pellet_outer_radius = 0.002315
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000085
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.549
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 10
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 48827.8 48827.8'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 2.6e+19 2.6e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12697021'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 40000 40000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12697021'
z = '295 295 295 295 295 295 295 295 416.36 422.49 428.63 434.27 439.36 444.71 450.07 455.48'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00463
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10920.4
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-2
fixed_point_rel_tol = 1e-2
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
start_time = 0
n_startup_steps = 1
end_time = 12697021
dtmax = 2e5
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.55 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-II_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(assessment/LWR/validation/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/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
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
diff_coeff_option = TURNBULL_D1_4D2_4D3
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_DiffCoeff4_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/element_integral_power/fission_gas_sifgrs_1D.i)
# Tests the ElementIntegralPower postprocessor
#
# A constant volumetric fission rate of 3.125e18 fissions/m^3-s is applied to a RZ cylinder
# having an inner radius of 0.01 m, outer radius of 0.0114818 m and height of 0.01 m.
# The power is thus constant with magnitude:
#
# Power = Fdot * Energy_per_fission * Volume
# = 3.125e18 * 3.2e-11 * Pi*(0.0114818^2 - 0.01^2) * 0.01
# = 100
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
fuel_height = 0.01
include_clad = false
include_plenum = false
slices_per_block = 1
pellet_bottom_coor = 0
pellet_outer_radius = 0.011481768
pellet_inner_radius = 0.01
clad_gap_width = 0
clad_thickness = 0
elem_type = EDGE2
pellet_mesh_density = customize
nx_p = 1
[]
[]
[Functions]
[unity]
type = ParsedFunction
expression = '1.0'
[]
[]
[Variables]
[temp]
initial_condition = 500.0
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 3.125e18
fission_rate_function = unity
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[left_T]
type = DirichletBC
variable = temp
boundary = 13
value = 500.0
[]
[]
[Materials]
[fuel]
type = HeatConductionMaterial
block = fuel
thermal_conductivity = 10
specific_heat = 100
[]
[density]
type = ParsedMaterial
block = fuel
property_name = density
expression = 10000
[]
[fission_gas_release]
type = UO2Sifgrs
temperature = temp
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 2
dt = 1.0e6
nl_abs_tol = 1e-8
[]
[Postprocessors]
[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
[]
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_clad = false
mesh_generator = layered1D_mesh
[]
[]
[Outputs]
exodus = true
[]
(test/tests/sifgrs/uo2/chromia_doped.i)
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 2.2e7'
y = '300. 2500.'
scale_factor = 1
[]
[Fiss_func]
type = PiecewiseLinear
x = '0 2.2e7'
y = '1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 300.
[]
[]
[AuxVariables]
[fission_rate]
initial_condition = 1.e19
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_end'
[]
[eff_diffusion_coefficient]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = 'initial timestep_end'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = T
fission_rate = fission_rate
skip_bdr_model = true
eff_diff_coeff_option = BULK
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 22
dt = 1e6
[]
[Postprocessors]
[temperature]
type = FunctionValuePostprocessor
function = Temp_func
execute_on = 'initial timestep_end'
[]
[fission_rate]
type = FunctionValuePostprocessor
function = Fiss_func
execute_on = 'initial timestep_end'
[]
[diffusion_coefficient]
type = ElementalVariableValue
elementid = 0
variable = eff_diff_coeff
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
execute_on = 'initial timestep_end'
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
exodus = true
[console]
type = Console
output_linear = true
max_rows = 23
[]
[]
(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/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
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/sifgrs/uo2/grain_growth.i)
# This test aims at demonstrating the coupling of the Sifgrs fission gas behavior
# model with the grain growth model (GrainRadiusAux). As the grains grow, the
# moving grain boundaries act as filters and contribute to the collection of gas
# at the grain boundaries (grain boundary sweeping). This effect is taken into
# account in the Sifgrs model by adding a supplementary fractional release term
# from within grains to grain boundaries that is equal to the volume fraction of
# the fuel swept by the moving boundaries. For this purpose, Sifgrs is coupled
# with the grain growth model and incorporates a specific grain boundary sweeping
# capability that can be activated by specifying gbs_model = true in the
# fission_gas_release block (see below).
# For the purpose of this test, fission gas swelling is not calculated.
# The gas that reaches the grain boundaries is forced to be instantaneously
# released to the plenum by skipping the grain boundary model
# (skip_bdr_model = true). Starting from an initial value of 5 microns, the grain
# radius increases due to grain growth following the temperature increase.
# At the end of the simulation the grain radius reaches the value of 17.464 microns.
# The results of the test show that gas release due to grain boundary sweeping occurs
# after grain growth commences.
# See also the enclosed file regression_tests_sifgrs.xlsx
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0. 1.e+08'
y = '1000. 1700. '
[]
[fission_rate_function]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1000
[]
[]
[AuxVariables]
[fission_rate]
[]
[grain_radius]
initial_condition = 5.e-06
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temperature
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = temperature
fission_rate = fission_rate
skip_bdr_model = true
grain_radius = grain_radius
gbs_model = true
output_properties = 'gas_concentration_generated_total gas_concentration_intra_total gas_concentration_swept_GB gas_concentration_GB_bubble_volume gas_concentration_release_total'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1.e-10
nl_rel_tol = 1.e-14
start_time = 0.
num_steps = 500
dt = 1.e06
end_time = 1e8
[]
[Postprocessors]
[average_grain_radius]
type = ElementAverageValue
variable = grain_radius
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFG092/BFG092.i)
################################################################################
#
# Description: Calvert Cliffs BFG092
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFG092_power.csv
# axial peaking factor file BFG092_axial_peaking.csv
# flux boundary condition file BFG092_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28354
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFG092_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFG092_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177711767 177712127'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177711767 177712127'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFG092_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177712127
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/MOX/JOYO/B14/PTM001/analysis/b14_ptm001_2DRZ_t.i)
initial_fuel_density = 11057.75
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.00008
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1372
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.982
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 14e-06 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
# variable = temp
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm001_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/sifgrs/uo2/ad_percolation_xfem.i)
# This is to test gas release through elements that are cut by XFEM. A 2D domain is
# used and the LineSegmentCutUserObject is used to insert a crack from the right edge
# of the domain inward toward the left edge. Because of the boundary conditions on temperature,
# gas would not normally be released to the free surface on the left side, but
# with the crack present gas release occurs.
[GlobalParams]
density = 10970.
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.005
ymin = 0
ymax = 0.005
nx = 5
ny = 5
[]
[create_block2]
type = RenameBlockGenerator
input = mesh
old_block = 0
new_block = 2
[]
[free1]
type = SideSetsAroundSubdomainGenerator
new_boundary = free1
normal = '1 0 0'
block = 2
input = create_block2
[]
[subdomain1]
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0 0'
top_right = '0.005 0.005 0'
block_id = 2
input = free1
[]
[]
#Create a notch in the mesh using XFEM
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.005 0.0025 0.001 0.0025'
time_start_cut = 0.0
time_end_cut = 0.0
[]
[]
[Variables]
[temp]
initial_condition = 673.
[]
[]
[AuxVariables]
[grain_radius]
block = 2
initial_condition = 5.e-06
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[burnup]
block = 2
[]
[fission_rate]
block = 2
[]
# percolation variables
[open_coverage]
order = CONSTANT
family = MONOMIAL
[]
[open_threshold]
order = CONSTANT
family = MONOMIAL
[]
[open]
order = CONSTANT
family = MONOMIAL
[]
[cluster]
order = CONSTANT
family = MONOMIAL
[]
[percolated]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseLinear
x = '0. 10800. 1.0e+8'
y = '0. 25. 25. '
scale_factor = 1000.
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0. 1.0e+8'
y = '25. 25.'
scale_factor = 1.0e+6
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = ADHeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = ADHeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = ADNeutronHeatSource
variable = temp
block = 2
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fggen]
type = ADMaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fractcov]
type = ADMaterialRealAux
variable = GBCoverage
property = GBCoverage
block = 2
[]
[fuel_conductivity]
type = ADMaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[brnp]
type = BurnupAux
variable = burnup
block = 2
fission_rate = fission_rate
molecular_weight = 0.270
[]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 2
value = 5.e+14
fission_rate_function = power_history
[]
# percolation auxkernels
[open_coverage]
type = ADMaterialRealAux
variable = open_coverage
property = GBCoverage
[]
[open_threshold]
type = ADMaterialRealAux
variable = open_threshold
property = 0.3 #GB coverage at which trijunction network is percolated
[]
[open]
type = ParsedAux
variable = open
coupled_variables = 'open_coverage open_threshold'
expression = 'open_coverage-open_threshold'
[]
[cluster]
type = FeatureFloodCountAux
variable = cluster
execute_on = 'timestep_begin'
field_display = UNIQUE_REGION
flood_counter = percolate
[]
[percolated]
type = PercolationAux
variable = percolated
execute_on = 'timestep_begin'
percolation = percolate
[]
[]
# Define boundary conditions
[BCs]
[imposed_ext_temp]
type = DirichletBC
boundary = right
variable = temp
value = 673.
[]
# insulate the top and bottom of this pellet
[top_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = top
[]
[bottom_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = bottom
[]
[left_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = left
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 3.
specific_heat = 400.
[]
[fuel_density]
type = ADParsedMaterial
block = 2
property_name = density
expression = 10970
[]
[fission_gas_release_and_swelling]
type = ADUO2Sifgrs
block = 2
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
res_param_option = HETEROGENEOUS_WHITE
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.
percolation_to_surface = percolated
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.
variable = temp
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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'
# controls for linear iterations
l_max_its = 100
l_tol = 1.0e-06
# controls for nonlinear iterations
nl_max_its = 10
nl_rel_tol = 1.0e-4
nl_abs_tol = 1.0e-8
# time control
start_time = 0.
end_time = 1.0e+8
num_steps = 5000
dtmax = 1.0e+06
dtmin = 1.0
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
timestep_limiting_function = power_history
max_function_change = 3000.
force_step_every_function_point = true
[]
[Quadrature]
order = THIRD
[]
[]
[UserObjects]
[percolate]
type = PercolationUserObject
execute_on = 'timestep_begin'
boundaries = 'free1'
variable = open
threshold = 0.0
use_xfem = true
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[ave_burnup_EAV]
type = ElementAverageValue
block = 2
variable = burnup
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 2
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
csv = true
exodus = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
(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/Separate_effects_FGB/analysis/Baker_TEM/Baker_TEM_Base.i)
# This input file is a partial input file that needs to be included in complementary input files.
# It contains base information/features that are shared between several assessment cases.
# This input file is therefore not designed to run on its own.
fission_rate = 1.e19 # fission/m^3/s
grain_radius_constant = 5.e-6 # m
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = ${initial_temperature}
[]
[Fiss_func]
type = ParsedFunction
expression = ${fission_rate}
[]
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
initial_condition = ${grain_radius_constant}
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pelletid]
type = PelletIdAux
variable = pellet_id
a_lower = 0
a_upper = 0.01
number_pellets = 1
execute_on = initial
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temperature
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = HeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = UO2Sifgrs
block = 0
temperature = temperature
fission_rate = fission_rate
gbs_model = true
grain_radius = grain_radius
ig_bubble_model = NUCLEATION_RESOLUTION
res_param_option = HETEROGENEOUS_WHITE
diff_coeff_option = TURNBULL_D1_4D2_D3
initial_porosity = 0.0
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra'
outputs = all
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
pellet_id = pellet_id
temperature = temperature
a_lower = 0
a_upper = 0.01
pellet_radius = 0.01
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-8
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 1000
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 0
[]
[bubble_density]
type = ElementAverageValue
block = 0
variable = bubble_concentration_intra
execute_on = TIMESTEP_END
[]
[bubble_radius]
type = ElementAverageValue
block = 0
variable = bubble_radius_intra
execute_on = TIMESTEP_END
[]
[]
[Outputs]
perf_graph = true
csv = true
file_base = '${experiment_name}_out'
[]
(test/tests/sifgrs/uo2/ad_grain_growth.i)
# This test aims at demonstrating the coupling of the Sifgrs fission gas behavior
# model with the grain growth model (GrainRadiusAux). As the grains grow, the
# moving grain boundaries act as filters and contribute to the collection of gas
# at the grain boundaries (grain boundary sweeping). This effect is taken into
# account in the Sifgrs model by adding a supplementary fractional release term
# from within grains to grain boundaries that is equal to the volume fraction of
# the fuel swept by the moving boundaries. For this purpose, Sifgrs is coupled
# with the grain growth model and incorporates a specific grain boundary sweeping
# capability that can be activated by specifying gbs_model = true in the
# fission_gas_release block (see below).
# For the purpose of this test, fission gas swelling is not calculated.
# The gas that reaches the grain boundaries is forced to be instantaneously
# released to the plenum by skipping the grain boundary model
# (skip_bdr_model = true). Starting from an initial value of 5 microns, the grain
# radius increases due to grain growth following the temperature increase.
# At the end of the simulation the grain radius reaches the value of 17.464 microns.
# The results of the test show that gas release due to grain boundary sweeping occurs
# after grain growth commences.
# This is the AD version of the test
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0. 1.e+08'
y = '1000. 1700. '
[]
[fission_rate_function]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1000
[]
[]
[AuxVariables]
[fission_rate]
[]
[grain_radius]
initial_condition = 5.e-06
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
thermal_conductivity = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temperature
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_function
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = ADUO2Sifgrs
temperature = temperature
fission_rate = fission_rate
skip_bdr_model = true
grain_radius = grain_radius
gbs_model = true
output_properties = 'gas_concentration_generated_total gas_concentration_intra_total gas_concentration_swept_GB gas_concentration_GB_bubble_volume gas_concentration_release_total'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1.e-10
nl_rel_tol = 1.e-14
start_time = 0.
num_steps = 500
dt = 1.e06
end_time = 1e8
[]
[Postprocessors]
[average_grain_radius]
type = ElementAverageValue
variable = grain_radius
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ADElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ADElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ADElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
csv = true
[]
(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/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/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]
[]
(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'
[]
[]
(assessment/LWR/validation/Separate_effects_FGB/analysis/White_AGR_SEM/White_AGR_SEM_Base.i)
# This input file is a partial input file that needs to be included in complementary input files.
# It contains base information/features that are shared between several assessment cases.
# This input file is therefore not designed to run on its own.
initial_temperature = 573.0 # K
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
data_file = ${temperature_history_data_file}
format = columns
[]
[Fiss_func]
type = PiecewiseLinear
data_file = ${fission_rate_data_file}
format = columns
[]
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
initial_condition = ${grain_radius_const}
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[burnup]
type = ConstantAux
variable = burnup
value = ${initial_burnup}
[]
[pelletid]
type = PelletIdAux
variable = pellet_id
a_lower = 0
a_upper = 0.01
number_pellets = 1
execute_on = initial
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[BCs]
[bottom_temperature]
type = FunctionDirichletBC
variable = temperature
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = HeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = UO2Sifgrs
block = 0
gbs_model = true
grain_radius = grain_radius
temperature = temperature
fission_rate = fission_rate
ig_bubble_model = NUCLEATION_RESOLUTION
ig_bubble_coarsening = WITH_COARSENING
ig_fully_coupled = LOOSELY_COUPLED
ig_diff_algorithm = polypole2
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
pellet_brittle_zone = pbz
pellet_id = pellet_id
initial_burnup = ${initial_burnup}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-8
nl_rel_tol = 1e-5
start_time = 0.0
end_time = ${end_time}
[TimeStepper]
type = IterationAdaptiveDT
dt = 8000.
optimal_iterations = 10
iteration_window = 4
growth_factor = 2.0
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = Temp_func
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 0
[]
[intra_swelling_total]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = deltav_v0_intra_total
[]
[inter_swelling_total]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = deltav_v0_bubble_GB
[]
[gas_amount_bubble_intra_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = gas_concentration_bubble_intra_non_restructured
[]
[gas_amount_matrix_intra_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = gas_concentration_matrix_intra_non_restructured
[]
[bubble_amount_intra_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = bubble_concentration_intra_non_restructured
[]
[bubble_radius_intra_average_non_restructured]
type = ElementAverageMaterialProperty
block = 0
mat_prop = bubble_radius_intra_non_restructured
[]
[bubble_pressure_intra_non_restructured]
type = ElementAverageMaterialProperty
block = 0
mat_prop = bubble_pressure_intra_non_restructured
[]
[gas_amount_GB_bubbles_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = gas_concentration_GB_bubble_volume_non_restructured
[]
[bubble_amount_GB_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = bubble_GB_volume_density_non_restructured
[]
[bubble_radius_GB_average_non_restructured]
type = ElementAverageMaterialProperty
block = 0
mat_prop = bubble_radius_GB_non_restructured
[]
[bubble_pressure_GB_non_restructured]
type = ElementAverageMaterialProperty
block = 0
mat_prop = bubble_GB_pressure_non_restructured
[]
[volume_fuel]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = 1
[]
[grain_radius_total]
type = ElementAverageMaterialProperty
block = 0
mat_prop = grain_radius_sifgrs
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
pellet_id = pellet_id
temperature = temperature
a_lower = 0
a_upper = 0.01
pellet_radius = 0.01
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Outputs]
perf_graph = true
csv = true
file_base = '${id}_out'
[]
(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
[]
(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/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'
[]
[]
(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
[]
[]
(test/tests/sifgrs/uo2/polypole2_ext_fsngas.i)
# This input is to test polypole-2 for UO2Sifgrs coupled to an external fission gas source
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[temperature_function]
type = ParsedFunction
expression = '1700'
[]
[fission_rate_function]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[ext_gas]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[ext_gas_aux]
type = ParsedAux
variable = ext_gas
coupled_variables = 'fission_rate'
use_xyzt = true
expression = 'fission_rate * 0.3017 / 6.02214076e23 * t'
[]
[]
[BCs]
[bottom_temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = '1 2'
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = temperature
fission_rate = fission_rate
fission_gas_conc = ext_gas
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-12
nl_abs_tol = 5e-16
nl_rel_tol = 1e-17
start_time = 0.0
num_steps = 50
dt = 3e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
exodus = true
hide = 'ext_gas'
[]
(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 [email protected]
#
# 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
[]
[]
(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/sifgrs/uo2/ad_first_stage_restart1.i)
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = ADMaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
saturation_coverage = 0
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 28 #50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
[out]
type = Exodus
[]
[console]
type = Console
execute_on = 'initial failed linear nonlinear timestep_end'
[]
[checkpoint]
type = Checkpoint
num_files = 1
[]
[]
[Problem]
[]
(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
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_new_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 25577 25577'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 1.2e+19 1.2e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 17153028'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 21000 21000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.075 0.15 0.225 0.3 0.375 0.45 0.525 0.6'
y = '0 17153028'
z = '295 295 295 295 295 295 295 295 295 499.9 509.1 517.8 525.42 532.71 540.29 547.7 552.3 554.81'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 17153028
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_50MW_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(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
[]
(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/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/sifgrs/uo2/ig_bubble_coarsening_disl_density_material.i)
# This is a test of passing disl_density_material into Sifgrs. Based on ig_bubble_coarsening.i.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '600. 600. 1450. 2300. 2300. 600.'
[]
[Fiss_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '1.e19 1.e19 1.e19 1.e19 1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 600.
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_intra_total]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[bbl_cnc_disl]
type = MaterialRealAux
variable = bbl_disl_grn
property = bubble_concentration_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[rad_bbl_disl]
type = MaterialRealAux
variable = rad_bbl_disl_grn
property = bubble_radius_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl_disl]
type = MaterialRealAux
variable = gas_bbl_disl_grn
property = gas_concentration_bubble_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[dvv0gr]
type = MaterialRealAux
variable = deltav_v0_intra_total
property = deltav_v0_intra_total
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_D3
res_param_option = HETEROGENEOUS_SETYAWAN
ig_bubble_coarsening = WITH_COARSENING
ig_diff_algorithm = POLYPOLE1
dislocation_density_material = parsed_dislocation_density
nuclerate_scalef = 0.5
outputs = 'all'
output_properties = 'dislocation_coverage_fraction deltav_v0_bubble_intra_dislocation'
[]
[parsed_dislocation_density]
type = ParsedMaterial
property_name = parsed_dislocation_density
expression = '1E14'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = -100
end_time = 60704600.
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
iteration_window = 4
growth_factor = 2.
linear_iteration_ratio = 100
time_t = '0 6.0e+7 6.07e7 60704600'
time_dt = '1000 10000 100 1'
force_step_every_function_point = true
timestep_limiting_function = Temp_func
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[radius_bubbles_at_dislocations]
type = ElementAverageValue
variable = rad_bbl_disl_grn
[]
[density_bbl_dislocations]
type = ElementAverageValue
variable = bbl_disl_grn
[]
[intrag_swelling]
type = ElementAverageValue
variable = deltav_v0_intra_total
[]
[dislocation_coverage_fraction]
type = ElementAverageValue
variable = dislocation_coverage_fraction
[]
[deltav_v0_bubble_intra_dislocation]
type = ElementAverageValue
variable = deltav_v0_bubble_intra_dislocation
[]
[]
[Outputs]
exodus = true
[]
(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
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
# This file was created using BIF with the following inputs:
# FK01.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.04298
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = 1
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
#
# 2-D RZ One Pellet Test - IFBA using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas. In addition, an IFBA layer is added which will
# generate He gas to be added to the plenum. The postprocessor interior_temp
# should be the same as the pure Xe test case initially and as the He gas is
# added to the plenum from the IFBA, the interior_temp value should approach
# the He fill gas test case (both in the doc subdirectory).
#
# This model demonstrates that the gas conductance for the plenum is being
# updated for the He gas generated by the IFBA layer.
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = fuel_thermal_strain
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = clad_thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = clad_thermal_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[he_prod]
type = IFBAHeProduction
zrb2_load = 1.181e-4
ifba_len = 1.0e-2
b10_enrich = 0.50
zrb2_rel_dens = 0.7
model = burnup
u235_enrich = 0.045
burnup = average_burnup
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
file_base = fill_gas_xenon_w_ifba_check
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(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/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
[]
(test/tests/sifgrs/uo2/ad_fast_mox.i)
# This test is for the application of Sifgrs to FBR MOX fuel.
# A lower limit for the grain-boundary bubble number density of 1.0e+11 bubbles/m2 is applied, which is recommended for FBR MOX simulations.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '2000'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e20'
[]
[]
[Variables]
[T]
initial_condition = 2000
[]
[]
[AuxVariables]
[fission_rate]
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[nbbl2]
type = ADMaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[gbswe]
type = ADMaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[MOX]
type = ADHeatConductionMaterial
block = 0
thermal_conductivity = 2.5
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 0
temperature = T
fission_rate = fission_rate
initial_porosity = 0.0
grain_radius_const = 8.0e-6
diff_coeff_option = TURNBULL_D1_4D2_4D3
bubble_gb_limit = 1.0e+11 #recommended value for fast MOX fuels
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 100
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 0
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
execute_on = linear
[]
[bubble_num_grain_boundary]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 0
[]
[swelling_grain_boundary]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 0
[]
[]
[Outputs]
exodus = false
csv = 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/'
[]
[]
(test/tests/sifgrs/uo2/mechanistic_igmodel.i)
# @Requirement F2.40
# This test is for evaluating the mechanistic model for the intra-granular fission gas behavior and bubble evolution in the Sifgrs fission gas model.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
initial_porosity = 0.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
exodus = true
[]
(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
[]
(test/tests/sifgrs/uo2/vacancies_assisting_atom_diff.i)
# This input file is used to test the mechanistic description of
# the number of vacancies that assist Xe diffusion based on lower
# length scale simulations.
[Mesh]
type = GeneratedMesh
dim = 1
nx = 5
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[temperature_kernel]
type = NullKernel
variable = temperature
[]
[]
[ICs]
[temperature_ic]
type = FunctionIC
variable = temperature
function = '800.0+(2700.0-800.0)*x'
[]
[]
[Problem]
solve = false
[]
[AuxVariables]
[fission_rate]
initial_condition = 1e19
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = temperature
fission_rate = fission_rate
outputs = all
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_D3
vacancies_assisting_gas_diffusion_option = COOPER2024
[]
[]
[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 = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1000000
num_steps = 1000
dtmax = 5e5
dtmin = 0.1
[]
[Postprocessors]
[temperature_low_T]
type = PointValue
variable = temperature
point = '0.0 0 0'
[]
[temperature_mid_T]
type = PointValue
variable = temperature
point = '0.5 0 0'
[]
[temperature_high_T]
type = PointValue
variable = temperature
point = '1.0 0 0'
[]
[pressure_bubble_GB_low_T]
type = PointValue
variable = bubble_GB_pressure
point = '0.0 0 0'
[]
[pressure_bubble_GB_mid_T]
type = PointValue
variable = bubble_GB_pressure
point = '0.5 0 0'
[]
[pressure_bubble_GB_high_T]
type = PointValue
variable = bubble_GB_pressure
point = '1.0 0 0'
[]
[atom_per_bubble_GB_low_T]
type = PointValue
variable = atom_per_bubble_GB
point = '0.0 0 0'
[]
[atom_per_bubble_GB_mid_T]
type = PointValue
variable = atom_per_bubble_GB
point = '0.5 0 0'
[]
[atom_per_bubble_GB_high_T]
type = PointValue
variable = atom_per_bubble_GB
point = '1.0 0 0'
[]
[vacancy_per_bubble_GB_low_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '0.0 0 0'
[]
[vacancy_per_bubble_GB_mid_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '0.5 0 0'
[]
[vacancy_per_bubble_GB_high_T]
type = PointValue
variable = vacancy_per_bubble_GB
point = '1.0 0 0'
[]
[vacancy_per_atom_bubble_GB_low_T]
type = PointValue
variable = vacancy_per_atom_bubble_GB
point = '0.0 0 0'
[]
[vacancy_per_atom_bubble_GB_mid_T]
type = PointValue
variable = vacancy_per_atom_bubble_GB
point = '0.5 0 0'
[]
[vacancy_per_atom_bubble_GB_high_T]
type = PointValue
variable = vacancy_per_atom_bubble_GB
point = '1.0 0 0'
[]
[volume_bubble_GB_low_T]
type = PointValue
variable = bubble_GB_volume
point = '0.0 0 0'
[]
[volume_bubble_GB_mid_T]
type = PointValue
variable = bubble_GB_volume
point = '0.5 0 0'
[]
[volume_bubble_GB_high_T]
type = PointValue
variable = bubble_GB_volume
point = '1.0 0 0'
[]
[]
[Outputs]
csv = true
time_step_interval = 300
[]
(test/tests/sifgrs/uo2/ad_polypole1.i)
# @Requirement F2.40
# This test is for evaluating the PolyPole-1 algorithm (for the intra-granular diffusion calculation)
# in the Sifgrs fission gas behavior model.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = ADMaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
testing_output = true
ig_diff_algorithm = POLYPOLE1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(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
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(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
[]
[]
(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/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
[]
(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/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'
[]
[]
(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'
[]
[]
(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/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/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_fuel_rod.i)
#
# Simple fuel rod example for relocation recovery.
#
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
pellet_quantity = 1
pellet_height = 0.01
pellet_outer_radius = 4.1e-3
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.0e-2
elem_type = QUAD8
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 6.327640e+07 6.33628e7 6.34492e7 1.0e08'
y = '0 2.5e4 2.5e4 0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = pin_geometry
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[gas_swell]
type = MaterialRealAux
block = pellet
variable = gas_swell
property = gas_swelling
execute_on = nonlinear
[]
[volumetric_strain]
type = RankTwoScalarAux
block = pellet
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = nonlinear
[]
[elastic_strain_rr]
type = RankTwoAux
variable = elastic_strain_rr
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[total_strain_rr]
type = RankTwoAux
variable = total_strain_rr
rank_two_tensor = total_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[stress_rr]
type = RankTwoAux
variable = stress_rr
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[elastic_strain_yy]
type = RankTwoAux
variable = elastic_strain_yy
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[total_strain_yy]
type = RankTwoAux
variable = total_strain_yy
rank_two_tensor = total_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[elastic_strain_zz]
type = RankTwoAux
variable = elastic_strain_zz
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[total_strain_zz]
type = RankTwoAux
variable = total_strain_zz
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = nonlinear
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = nonlinear
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = nonlinear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.5e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1e12
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[UserObjects]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
# [avg_gap]
# type = LayeredAverage
# block = pellet
# variable= penetration
# direction = y
# num_layers = 1
# execute_on = timestep_end
# []
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
time_t = '0 1.0e4 6.327640e+07 6.33628e7 6.34492e7 1.0e08'
time_dt = '2e2 1e3 1e3 1e3 1e3 1e3'
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[reloc_strain]
type = ElementAverageValue
variable = relocation_strain
block = pellet
execute_on = timestep_end
[]
[contact_pressure]
type = ElementAverageValue
variable = contact_pressure
block = pellet
execute_on = nonlinear
[]
[average_contact_pressure]
type = ElementAverageValue
variable = layered_average_contact_pressure
block = pellet
execute_on = timestep_end
[]
[clad_crp_zz]
type = SideAverageValue
boundary = 5
variable = creep_strain_zz
execute_on = timestep_end
[]
[clad_crp_xx]
type = SideAverageValue
boundary = 5
variable = creep_strain_xx
execute_on = timestep_end
[]
[clad_creep_increment]
type = SideAverageIncrementTensorComponent
boundary = 5
variable = creep_strain_zz
execute_on = timestep_end
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = pellet
execute_on = timestep_end
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
execute_on = timestep_end
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
execute_on = timestep_end
[]
[elastic_strain_rr]
type = ElementAverageValue
variable = elastic_strain_rr
block = pellet
execute_on = nonlinear
[]
[total_strain_rr]
type = ElementAverageValue
variable = total_strain_rr
block = pellet
execute_on = nonlinear
[]
[stress_rr]
type = ElementAverageValue
variable = stress_rr
block = pellet
execute_on = timestep_end
[]
[elastic_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
block = pellet
execute_on = nonlinear
[]
[total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
block = pellet
execute_on = nonlinear
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
block = pellet
execute_on = timestep_end
[]
[elastic_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
block = pellet
execute_on = nonlinear
[]
[total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
block = pellet
execute_on = timestep_end
[]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
block = pellet
execute_on = timestep_end
[]
[thermal_strain_rr]
type = DifferencePostprocessor
value1 = total_strain_rr
value2 = elastic_strain_rr
execute_on = timestep_end
[]
[thermal_strain_yy]
type = DifferencePostprocessor
value1 = total_strain_yy
value2 = elastic_strain_yy
execute_on = timestep_end
[]
[thermal_strain_zz]
type = DifferencePostprocessor
value1 = total_strain_zz
value2 = elastic_strain_zz
execute_on = timestep_end
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[recov_strain]
type = ElementAverageValue
variable = recovered_relocation_strain
block = pellet
execute_on = timestep_end
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'reloc_strain recov_strain'
execute_on = 'FINAL'
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
(test/tests/sifgrs/uo2/polypole2_hbs.i)
# This input is to test polypole-2 for UO2Sifgrs with the high burnup structure model
# The model is based on K. Lassmann et al., JNM 226, 1, 1995, where the intragranular
# Xe concentration in solid solution is assumed to increase linearly with burnup until
# the high-burnup structure forms at a given burnup threshold. At that point, the Xe
# concentration in the matrix decreases exponentially as it goes to the hbs pores.
#
# To reproduce the model and results published in K. Lassmann et al., JNM 226, 1, 1995,
# Xe diffusion is made effectively null to prevent Xe release from the grain interior.
# Intragranular bubble nucleation is also supressed (and initial_porosity = 0) as the
# paper only measures Xe concentration in teh matrix aways from bubbles and cracks.
# The results of this test (evolution of Xe_matrix) correspond to Fig. 4 from
# K. Lassmann et al., JNM 226, 1, 1995.
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[temperature_function]
type = ParsedFunction
expression = '1700'
[]
[fission_rate_function]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[burnup_aux]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
density = 10980 # kg/m3
[]
[]
[BCs]
[bottom_temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = '1 2'
[]
[]
[Materials]
[High_Burnup_Structure_Formation]
type = HighBurnupStructureFormation
temperature = temperature
burnup = burnup
hbs_model_type = Lassmann
[]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
ig_bubble_model = NUCLEATION_RESOLUTION
nuclerate_scalef = 0
initial_porosity = 0
fract_yield = 0.268 # from 'K. Lassmann et al., JNM 226, 1, 1995' for Xe
igdiffcoeff_scalef = 1e-12 # to suppress intragranular diffusion and prevent thermal release
burnup = burnup
hbs_model = true
hbs_material = High_Burnup_Structure_Formation
temperature = temperature
fission_rate = fission_rate
ig_diff_algorithm = POLYPOLE2
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra gas_concentration_matrix_intra deltav_v0_intra_total deltav_v0_bubble_GB gas_concentration_GB_bubble_volume_HBS'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = Newton
l_tol = 1e-12
nl_abs_tol = 5e-16
nl_rel_tol = 1e-17
start_time = 0.0
end_time = 2.6e8
dt = 3e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intra_swelling_total]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[inter_swelling_total]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_bubble_GB
[]
[inter_swelling_HBS]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_bubble_GB_HBS
[]
[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
[]
[bubble_pressure_intra_non_restructured]
type = ElementAverageMaterialProperty
mat_prop = bubble_pressure_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_GB_single_atoms]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_single_atom_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
[]
[bubble_pressure_intra_hbs]
type = ElementAverageMaterialProperty
mat_prop = bubble_pressure_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
[]
[bubble_pressure_GB_hbs]
type = ElementAverageMaterialProperty
mat_prop = bubble_GB_pressure_HBS
[]
[volume_domain]
type = ElementIntegralMaterialProperty
mat_prop = 1
[]
[hbs_volume]
type = ElementIntegralMaterialProperty
mat_prop = hbs_volume_fraction
[]
[hbs_volume_fraction]
type = ParsedPostprocessor
pp_names = 'hbs_volume volume_domain'
expression = 'hbs_volume / volume_domain'
[]
[grain_radius_total]
type = ElementAverageMaterialProperty
mat_prop = grain_radius_sifgrs
[]
[burnup]
type = ElementAverageValue
variable = burnup
[]
[]
[Outputs]
csv = true
[]
(test/tests/sifgrs/uo2/ad_percolation.i)
# This test is to verify that the optional check for a path to a free surface for gas release works correctly.
# When the optional percolation AuxVariable is supplied to Sifgrs, gas release is not allowed unless
# that variable is > 0.5 locally. The PercolationUserObject checks whether each position is connected
# to a free surface and sets the AuxVariable accordingly.
# In this test, the gas released should be nearly the same as the sifgrs_second_stage test.
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[free1]
type = SideSetsAroundSubdomainGenerator
new_boundary = free1
normal = '1 0 0'
block = 1
input = mesh
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1400
[]
[]
[AuxVariables]
[fission_rate]
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
# percolation AuxVariables
[open_coverage]
order = CONSTANT
family = MONOMIAL
[]
[open_threshold]
order = CONSTANT
family = MONOMIAL
[]
[open]
order = CONSTANT
family = MONOMIAL
[]
[cluster]
order = CONSTANT
family = MONOMIAL
[]
[percolated]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[frcvrg]
type = ADMaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial linear'
[]
# percolation auxkernels
[open_coverage]
type = ADMaterialRealAux
variable = open_coverage
property = GBCoverage
[]
[open_threshold]
type = ADMaterialRealAux
variable = open_threshold
property = sat_coverage
[]
[open]
type = ParsedAux
variable = open
coupled_variables = 'open_coverage open_threshold'
expression = 'open_coverage-open_threshold'
[]
[cluster]
type = FeatureFloodCountAux
variable = cluster
execute_on = 'timestep_begin'
field_display = UNIQUE_REGION
flood_counter = percolate
[]
[percolated]
type = PercolationAux
variable = percolated
execute_on = 'timestep_begin'
percolation = percolate
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
percolation_to_surface = percolated
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
end_time = 5e7
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[UserObjects]
[percolate]
type = PercolationUserObject
execute_on = 'timestep_begin'
boundaries = 'free1'
variable = open
threshold = 0.0
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(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/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_old_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 38974.7 38974.7'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 1.9e+19 1.9e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 32000 32000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '295 295 295 295 295 295 295 295 593.58 606.36 619.13 630.26 640.87 651.76 662.67 673.67'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 25000000
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_75MW_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFJ027/BFJ027.i)
################################################################################
#
# Description: Calvert Cliffs BFJ027
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFJ027_power.csv
# axial peaking factor file BFJ027_axial_peaking.csv
# flux boundary condition file BFJ027_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28943
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFJ027_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFJ027_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177688931 177689291'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177688931 177689291'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFJ027_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0366 .9634 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177689291
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(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
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_grainGrowth.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_GrainGrowth_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_old_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 25577 25577'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 1.2e+19 1.2e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 17153028'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 21000 21000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.075 0.15 0.225 0.3 0.375 0.45 0.525 0.6'
y = '0 17153028'
z = '295 295 295 295 295 295 295 295 295 499.9 509.1 517.8 525.42 532.71 540.29 547.7 552.3 554.81'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 17153028
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_50MW_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(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/sifgrs/uo2/diffusion_coefficient.i)
# Analytical test for the diffusion coefficient of the Sifgrs fission gas behavior model.
#
# For the purpose of verifying the implementation of the diffusion coefficient, the BISON results are compared with an independent calculations (see attached file regression_tests_sifgrs.xlsx).
# The formulation for the diffusion coefficient adopted in the Sifgrs model is based on the formulation of Turnbull et al. (JNM 107, 168, 1982; Preston, England, September 18-22, 1988).
#
# Variable definitions
# T = temperature in K
# F = Fission rate in fissions/(m^3*s)
# k = Boltzmann constant in J/K = 1.380651e-23
# Zo = fragment influence; fission fragment range of influence in meters = 1e-9
# lf = fragment range; fission fragment travel distance before coming to rest in meters = 6e-6
#
# Equations and sample calculations
#
# Use T = 1700 K, F = 2.5e19 fission/m^3s
#
# Diffusion coefficient terms (m^2/s)
#
# D1 = intrinsic term = 7.6e-10 * exp(-4.8599e-19/kT)
# D1 = 7.73e-19
#
# D2 = enhanced vacancy term = 1.41e-25 * exp(-1.9053e-19/kT) * sqrt(F)
# D2 = 2.10e-19
#
# The purely rating dependent term D3 is neglected (see, e.g., P. Losonen JNM, 304, 29, 2002)
#
# D = single gas atom diffusion coefficient = D1 + 4*D2
# D = 1.61e-18
#
# Based on the formulation of Speight (Nuclear Science and Engineering 37, 180, 1969), include effects of intragranular trapping and resolution to compute an effective diffusion coefficient. The trapping and resolution rates are computed using relations from White and Tucker (JNM 118, p1, 1983)
#
# R = Intragranular bubble radius in m = 5e-10*(1 + 106*exp(-8703/T))
# R = 8.17e-10
#
# Radius_sum = intragranular bubble radius + fragment influence = R + Zo in m
# Radius_sum = 1.82e-09
#
# CBtot = intragranular bubble concentration in 1/m^3 = 1.52e+27 / T - 3.3e+23
# CBtot = 5.64e+23
#
# g = trapping rate = 4 * pi * R * D * CBtot
# g = 5.70e-03
#
# b = resolution rate = 3.03 * F * pi * lf * Radius_sum^2
# b = 4.71e-03
#
# Deff = effective diffusion coefficient = D*b/(b + g)
# Deff = 5.41e-19
#
# Example problem description
#
# A single hex 8 element is used to solve the heat equation with no source term. One boundary of the block is insulated while the
# boundary opposite to the insulated boundary is assigned a prescibed Dirichlet boundary condition defined by a function.
# The function increases the temperature, starting at 800 K increasing linearly to 1700 K. At the same time, the fission rate is increasing linearly from 1e19 to 2.5e19. At the final time in this calculation, Deff should equal 5.41e-19.
# See also the sheet sifgr_diffusion_coefficient of the attached file (regression_tests_sifgrs.xlsx), which plots Deff values from this calculation and independent calculations. One should be able to reproduce that plot with the results from this test.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0 1.2e7'
y = '800 1700'
scale_factor = 1
[]
[Fiss_func]
type = PiecewiseLinear
x = '0 1.2e7'
y = '1e19 2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 800.0
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[diffusion_coefficient]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 12
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
exodus = true
[]
(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/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/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/sifgrs/uo2/material_input_fission_rate.i)
# @Requirement F2.40
# This is a test of passing fission_rate_material into Sifgrs. Based on mechanistic_igmodel.i.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate_material = Fission_rate_material
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
initial_porosity = 0.0
[]
[Fission_rate_material]
type = ParsedMaterial
block = 0
property_name = Fission_rate_material
expression = '1.e19'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
csv = true
[]
(test/tests/sifgrs/uo2/polypole1.i)
# @Requirement F2.40
# This test is for evaluating the PolyPole-1 algorithm (for the intra-granular diffusion calculation)
# in the Sifgrs fission gas behavior model.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[temperature_function]
type = ParsedFunction
expression = '1700'
[]
[fission_rate_function]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = '1 2'
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = temperature
fission_rate = fission_rate
testing_output = true
ig_diff_algorithm = POLYPOLE1
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra gas_concentration_matrix_intra deltav_v0_intra_total fract_FGR_analytical'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-12
nl_abs_tol = 5e-16
nl_rel_tol = 1e-17
start_time = 0.0
num_steps = 50
dt = 3e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
exodus = true
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
[]
[]
(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
[]
(test/tests/sifgrs/uo2/ad_transient_model.i)
# This is a test for the transient capability included in the Sifgrs fission gas behavior model.
# This transient treatment accounts for the rapid gas release from the grain boundaries due
# to micro-cracking during temperature transients. The effect of micro-cracking is interpreted
# as a reduction of the gas storing capacity of grain boundaries during transients,
# effectively leading to an increase of FGR and to a corresponding decrease of fission gas swelling.
# The fraction of cracked grain surface is described by a temperature-dependent sigmoid function,
# which reproduces the experimentally observed kinetics of gas release during both heating and
# cooling transients.
# The transient is composed of 5 phases:
# 1. build up of fission gases and burnup accummulation at constant temperature
# 2. heat up representative of a transient (micro-cracking during heating)
# 3. constant high temperature (healing)
# 4. cool down representative of a transient (micro-cracking during cooling)
# 5. constant low temperature (healing)
# The calculated FGR rapidly increases during the transients, and the fission gas swelling decreases correspondingly.
# This test can be adapted using transient_option = MICROCRACKING_BURNUP in UO2Sifgrs.
# The resulting test leverages the option for considering a burnup-dependent central temperature, which accounts
# for the gradual weakening of grain boundaries due to irradiation-created defects.
# This is the AD version of the test
end_buildup_time = 1e6 # s
end_heating_time = ${fparse end_buildup_time + 500} # s
end_stable_time = ${fparse end_heating_time + 2e5} # s
end_cooling_time = ${fparse end_stable_time + 500} # s
end_healing_time = ${fparse end_cooling_time + 3e5} # s
[GlobalParams]
displacements = 'disp_x'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0. ${end_buildup_time} ${end_heating_time} ${end_stable_time} ${end_cooling_time} ${end_healing_time}'
y = '1000. 1000. 2300. 2300. 1000. 1000.'
[]
[fission_rate_function]
type = ParsedFunction
expression = '1e21'
[]
[]
[Variables]
[temperature]
initial_condition = 1000.
[]
[disp_x]
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[sat_coverage]
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 = temperature
thermal_conductivity = 1
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[burnup]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_function
boundary = 1
preset = false
[]
[x]
type = ADDirichletBC
variable = disp_x
boundary = 'left right'
value = 0
[]
[]
[Materials]
[fission_gas_behavior]
type = ADUO2Sifgrs
temperature = temperature
fission_rate = fission_rate
burnup = burnup
effdiffcoeff_scalef = 1e2 # artificially increases intragranular diffusion to increase GB content
transient_option = MICROCRACKING
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra gas_concentraion_matrix_intra gas_concentration_GB_bubble_volume deltav_v0_intra_total'
outputs = 'all'
[]
[density]
type = ADStrainAdjustedDensity
strain_free_density = 10417.
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
[]
[fuel_volumetric_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
temperature = temperature
burnup = burnup
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-12
nl_abs_tol = 1e-40
nl_rel_tol = 1e-17
start_time = 0.
end_time = ${end_healing_time}
dtmax = 1e5
dtmin = 1
# direct control of time steps vs time (optional)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e5
optimal_iterations = 10
iteration_window = 4
growth_factor = 1
linear_iteration_ratio = 100
time_t = '0 ${end_buildup_time} ${end_heating_time} ${end_stable_time} ${end_cooling_time}'
time_dt = '1e4 1e2 1e3 1e2 2e3'
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ADElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_bubble_inter]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume
[]
[gas_amount_matrix_intra]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[gas_amount_material]
type = SumPostprocessor
values = 'gas_amount_matrix_intra gas_amount_bubble_intra gas_amount_bubble_inter'
[]
[bubble_amount_intra]
type = ADElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ADElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[bubble_amount_volume_inter]
type = ADElementIntegralMaterialProperty
mat_prop = bubble_GB_volume_density
[]
[bubble_amount_surface_inter]
type = ADElementIntegralMaterialProperty
mat_prop = bubble_GB_surface_density
[]
[bubble_radius_inter_average]
type = ADElementAverageMaterialProperty
mat_prop = bubble_radius_GB
[]
[intergranular_bubble_fractional_coverage]
type = ADElementIntegralMaterialProperty
mat_prop = GBCoverage
[]
[intergranular_bubble_fractional_coverage_saturation]
type = ADElementIntegralMaterialProperty
mat_prop = sat_coverage
[]
[intergranular_swelling]
type = ADElementIntegralMaterialProperty
mat_prop = deltav_v0_bubble_GB
[]
[burnup]
type = ElementAverageValue
variable = burnup
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
csv = 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'
[]
[]
(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/meso_thcond_test/sifgrs_swelling_fissiongas_graingrowth.i)
# This test is for the fuel swelling and porosity computation in the Sifgrs
# fission gas behavior model for UO2 (UO2Sifgrs).
# 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'
volumetric_locking_correction = true
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube_111.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = 1400.
[]
[Fiss_func]
type = ParsedFunction
expression = 1.e19
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1400.
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[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
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[intra_porosity]
order = CONSTANT
family = MONOMIAL
[]
[gas_atom_conc]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
[]
[GBresistance]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
order = CONSTANT
family = MONOMIAL
initial_condition = 5e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[brnp]
type = BurnupAux
variable = burnup
block = 1
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[por]
type = PorosityAuxUO2
block = 1
variable = porosity
execute_on = linear
[]
[rho]
type = MaterialRealAux
variable = density
property = density
execute_on = 'initial timestep_end'
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
[]
[thcond]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[GBCoverage]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial timestep_end'
[]
[intra_porosity]
type = MaterialRealAux
variable = intra_porosity
property = intra_porosity
[]
[gas_atom_conc]
type = MaterialRealAux
variable = gas_atom_conc
property = gas_atom_conc
[]
[deltav_v0_dn]
type = MaterialRealAux
variable = deltav_v0_dn
property = densification
[]
[deltav_v0_sl]
type = MaterialRealAux
variable = deltav_v0_sl
property = solid_swelling
[]
[rad_bbl_bdr]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = 'initial timestep_end'
[]
[GBresistance]
type = MaterialRealAux
variable = GBresistance
property = GBresistance
execute_on = 'initial timestep_end'
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temp
[]
[]
[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]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = 1
burnup = burnup
temperature = temp
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1400.0
eigenstrain_name = fuel_thermal_strain
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 10417.0
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 1
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.05
[]
[fuel_thermal_meso]
type = UO2FissionGasThermal
block = 1
temperature = temp
burnup = burnup
grain_radius = grain_radius
[]
[]
[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
block = 1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 1
[]
[GBCov]
type = ElementalVariableValue
variable = GBCoverage
elementid = 0
execute_on = 'initial timestep_end'
[]
[gas_atom_conc]
type = ElementalVariableValue
variable = gas_atom_conc
elementid = 0
[]
[thcond]
type = ElementalVariableValue
variable = thermal_conductivity
elementid = 0
execute_on = 'initial timestep_end'
[]
[intra_porosity]
type = ElementalVariableValue
variable = intra_porosity
elementid = 0
[]
[rad_bbl_bdr]
type = ElementalVariableValue
variable = rad_bbl_bdr
elementid = 0
execute_on = 'initial timestep_end'
[]
[GBresistance]
type = ElementalVariableValue
variable = GBresistance
elementid = 0
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
file_base = graingrowth
csv = true
[exodus]
type = Exodus
[]
[]
(test/tests/sifgrs/uo2/percolation_xfem.i)
# This is to test gas release through elements that are cut by XFEM. A 2D domain is
# used and the LineSegmentCutUserObject is used to insert a crack from the right edge
# of the domain inward toward the left edge. Because of the boundary conditions on temperature,
# gas would not normally be released to the free surface on the left side, but
# with the crack present gas release occurs.
[GlobalParams]
density = 10970
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.005
ymin = 0
ymax = 0.005
nx = 5
ny = 5
[]
[create_block2]
type = RenameBlockGenerator
input = mesh
old_block = 0
new_block = 2
[]
[free1]
type = SideSetsAroundSubdomainGenerator
new_boundary = free1
normal = '1 0 0'
block = 2
input = create_block2
[]
[subdomain1]
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0 0'
top_right = '0.005 0.005 0'
block_id = 2
input = free1
[]
[]
#Create a notch in the mesh using XFEM
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.005 0.0025 0.001 0.0025'
time_start_cut = 0.0
time_end_cut = 0.0
[]
[]
[Variables]
[temp]
initial_condition = 673.
[]
[]
[AuxVariables]
[grain_radius]
block = 2
initial_condition = 5.e-06
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[burnup]
block = 2
[]
[fission_rate]
block = 2
[]
# percolation variables
[open_coverage]
order = CONSTANT
family = MONOMIAL
[]
[open_threshold]
order = CONSTANT
family = MONOMIAL
[]
[open]
order = CONSTANT
family = MONOMIAL
[]
[cluster]
order = CONSTANT
family = MONOMIAL
[]
[percolated]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseLinear
x = '0. 10800. 1.0e+8'
y = '0. 25. 25. '
scale_factor = 1000.
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0. 1.0e+8'
y = '25. 25.'
scale_factor = 1.0e+6
[]
[]
[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 = 2
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fractcov]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
block = 2
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[brnp]
type = BurnupAux
variable = burnup
block = 2
fission_rate = fission_rate
molecular_weight = 0.270
[]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 2
value = 5.e+14
fission_rate_function = power_history
[]
# percolation auxkernels
[open_coverage]
type = MaterialRealAux
variable = open_coverage
property = GBCoverage
[]
[open_threshold]
type = MaterialRealAux
variable = open_threshold
property = 0.3 #GB coverage at which trijunction network is percolated
[]
[open]
type = ParsedAux
variable = open
coupled_variables = 'open_coverage open_threshold'
expression = 'open_coverage-open_threshold'
[]
[cluster]
type = FeatureFloodCountAux
variable = cluster
execute_on = 'timestep_begin'
field_display = UNIQUE_REGION
flood_counter = percolate
[]
[percolated]
type = PercolationAux
variable = percolated
execute_on = 'timestep_begin'
percolation = percolate
[]
[]
# Define boundary conditions
[BCs]
[imposed_ext_temp]
type = DirichletBC
boundary = right
variable = temp
value = 673.
[]
# insulate the top and bottom of this pellet
[top_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = top
[]
[bottom_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = bottom
[]
[left_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = left
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = 2
thermal_conductivity = 3.
specific_heat = 400.
[]
[fuel_density]
type = ParsedMaterial
block = 2
property_name = density
expression = 10970
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 2
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
res_param_option = HETEROGENEOUS_WHITE
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.
percolation_to_surface = percolated
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.
variable = temp
[]
[]
[Executioner]
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'
# controls for linear iterations
l_max_its = 100
l_tol = 1.0e-06
# controls for nonlinear iterations
nl_max_its = 10
nl_rel_tol = 1.0e-4
nl_abs_tol = 1.0e-8
# time control
start_time = 0.
end_time = 1.0e+8
num_steps = 5000
dtmax = 1.0e+06
dtmin = 1.0
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
timestep_limiting_function = power_history
max_function_change = 3000.
force_step_every_function_point = true
[]
[Quadrature]
order = THIRD
[]
[]
[UserObjects]
[percolate]
type = PercolationUserObject
execute_on = 'timestep_begin'
boundaries = 'free1'
variable = open
threshold = 0.0
use_xfem = true
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[ave_burnup_EAV]
type = ElementAverageValue
block = 2
variable = burnup
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 2
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
csv = true
exodus = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
(test/tests/sifgrs/uo2/polypole1_intergranular.i)
# This input is used to test Sifgrs for UO2 with polypole1 and the intergranular model
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Functions]
[temperature_function]
type = ParsedFunction
expression = '1700'
[]
[fission_rate_function]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = temperature
fission_rate = fission_rate
testing_output = true
ig_diff_algorithm = POLYPOLE1
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra gas_concentraion_matrix_intra deltav_v0_intra_total fract_FGR_analytical'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-12
nl_abs_tol = 5e-16
nl_rel_tol = 1e-17
end_time = 3e8
dt = 5e5
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[bubble_GB_surface_density]
type = ElementAverageMaterialProperty
mat_prop = bubble_GB_surface_density
[]
[bubble_GB_volume_density]
type = ElementAverageMaterialProperty
mat_prop = bubble_GB_volume_density
[]
[bubble_GB_projected_area]
type = ElementAverageMaterialProperty
mat_prop = bubble_GB_projected_area
[]
[gas_amount_bubble_GB_volume]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume
[]
[gas_concentration_thermal_release_volume]
type = ElementAverageMaterialProperty
mat_prop = gas_concentration_thermal_release_volume
[]
[gas_concentration_thermal_release_surface]
type = ElementAverageMaterialProperty
mat_prop = gas_concentration_thermal_release_surface
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
exodus = true
csv = true
[]
(test/tests/sifgrs/uo2/pbz_negative_temperature_exception.i)
# This test ensures that the moose exception to cut the timestep when a
# negative temperature is detected in PelletBrittleZone is properly executed.
[Mesh]
[square]
type = GeneratedMeshGenerator
dim = 2
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 2'
y = '300 -100.0'
[]
[Fiss_func]
type = ConstantFunction
value = 1e19
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 800.0
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pelletid]
type = PelletIdAux
variable = pellet_id
a_lower = 0
a_upper = 1
number_pellets = 1
execute_on = initial
[]
[]
[BCs]
[all_T]
type = FunctionDirichletBC
variable = T
function = temperature_func
boundary = 'bottom right left top'
[]
[]
[Materials]
[fission_gas_release]
type = UO2Sifgrs
temperature = T
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 2
dt = 2
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'dt = 1'
[]
[pbz]
type = PelletBrittleZone
pellet_id = pellet_id
temperature = T
pellet_radius = 1
a_lower = 0
a_upper = 1
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[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/sifgrs/uo2/ad_second_stage.i)
# @Requirement F2.40
# This test is for evaluating the second stage of the FGR process in the Sifgrs fission gas behavior model. The second stage involves the calculation of the gas behavior at grain boundaries and release to the fuel rod free volume.
# UO2Sifgrs calculates the grain-boundary gas bubble kinetics, including bubble growth and coalescence driven by gas atoms and vacancies inflow at the bubbles, and release of a fraction of the grain-boundary gas after grain-boundary saturation. The saturation condition reads Fc = 0.5, with Fc being the fractional coverage of grain boundary surface by bubbles.
# This test is aimed at demonstrating how FGR commences upon attainment of the saturation condition (which occurs for this case after 8E+06 s), and how the saturation condition Fc = 0.5 is maintained from that moment on (see also attached file regression_tests_sifgrs.xlsx).
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1400
[]
[]
[AuxVariables]
[fission_rate]
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[frcvrg]
type = ADMaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
end_time = 5e7
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(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'
[]
[]