1D MOX tutorial
Note
This case can be found in the Cases/testCases/generic_mox_1D/ folder of the OFFBEAT repository.
This tutorial shows the OFFBEAT capabilities of simulating MOX fuel in Sodium Fast Reactor Conditions. The tutorial case consist in a one-month long irradiation of an Americium-bearing MOX fuel with the following characteristics:
Mesh
OFFBEAT provides a Python script to facilitate geometry creation and meshing that can be found at ./offbeat/tools/rodMaker. In the input file named rodDict, users can specify the parameters for the geometry. For this case, a radial grading is introduced in the fuel mesh, in order to resolve the steep radial gradient of minor actinides and porosity concentration characteristic of SFR-MOX fuel. The mesh used for this tutorial is shown in Figure 1, reduced 100x in the z-direction for visualization.
Selection of Sub-Physics
MOX fuels irradiated in SFRs offer a broader set of phenomena of interest with respect to tradional LWR fuels, including the migration of species due to the high temperature and steep thermal gradients. For this reason, besides thermal and mechanical governing equations, OFFBEAT offers the possibility to solve additional PDEs to simulate these phenomena.
The selection of the solvers to be enabled is done in the constant/solverDict input dictionary:
thermalSolver solidConduction;
mechanicsSolver smallStrain;
elementTransport byList; //(1)
neutronicsSolver fromLatestTime;
byListoption allows the user to enable a list of additional solvers.
When elementTransport is set to byList, the user needs to define an additional elementTransportOptions dictionary in constant/solverDict to specify the additional sub-physics to be solved by OFFBEAT. For this case, porosity migration, Am and Pu migration are enabled:
elementTransportOptions
{
solvers
(
porosityTransport
AmRedistribution
PuRedistribution
);
porosityOptions
{
boundedAdvectionTerm on; //(1)
diffusiveTerm off; //(2)
}
"AmRedistributionOptions|PuRedistributionOptions"
{
poreMigration off; //(3)
}
}
Fractional porosity bounding in interval [0,1] is enforced by the code.
Fickian diffusion term is here disabled.
Actinides transport via pore migration is here disregarded.
For each fuel material simulated in OFFBEAT the user can select the pore velocity correlation to be used. This is done in each respective material dictionary in constant/solverDict:
This specific case includes a visco-plastic rheology model for the fuel, specifically tailored for FBR-MOX. This is enabled in the material subdictionary of the constant/solverDict file:
fuel
{
material UPuO2;
Tref Tref [ 0 0 0 1 0 ] 293;
...
rheologyModel misesPlasticCreep;
rheologyModelOptions
{
plasticStrainVsYieldStress table ( ( 0 3e+08 ) );
creepModel RoutbortFastMOXCreepModel;
irradiationCreep on;
NewtonRaphsonMethod on;
NewtonRaphsonTolerance 1e-3;
creepRateLimiter on;
creepRateLimit 4.1e-6;
relaxCreep 0.1;
}
}
Boundary Conditions
Boundary and initial conditions must be specified for each sub-physics solved by OFFBEAT. However, the fields related to porosity, americium (Am), and plutonium (Pu) migration are automatically initialized based on user-defined values in constant/solverDict and do not require explicit field definitions in the 0/ folder, unlike 0/T and 0/D. The isotopic composition of the MOX fuel is specified by the user in the materials/fuel sub-dictionary of constant/solverDict as:
isotopes
{
U
{
ratioOverMetal 0.71;
weightFractions ( 235 0.003359 238 0.996641 );
}
Pu
{
ratioOverMetal 0.26;
weightFractions ( 238 0.013 239 0.604 240 0.234 241 0.104 242 0.045 );
}
Am
{
ratioOverMetal 0.03;
weightFractions ( 241 1 243 0);
}
}
This tutorial case uses the NaCoolantChannel boundary condition to define the outer cladding temperature based on the thermo-fluid state of the sodium flowing along the cladding surface. The configuration is specified in the 0/T file:
cladOuter
{
type NaCoolantChannel;
flowArea 22.55e-6;
hydraulicDiameter 5e-3;
massFlowRate 0.098;
inletTemperatureList
{
values
(
(0 300)
(3600 668)
(1e10 300)
);
}
NusseltModel Lyon;
relaxHTC 0.8;
value $internalField;
}
Note
The initial temperature of the fuel rod is defined in the 0/T file. Since the rod's geometric specifications are always provided in "cold" conditions, the simulation should typically be initialized at approximately 300 K for consistency. This can be achieved by setting the internalField keyword to uniform 300.
Note
The initialization of the rod's temperature directly influences the internal gas pressure. For sodium-cooled fast reactor rods, which are typically filled with 1 bar of helium under cold conditions, an initialization temperature of 300 K should correspond to an initial gas pressure of 1 bar in the 0/gapGas dictionary. If higher initialization temperatures are selected, the initial pressure should be consistently calculated using the ideal gas law to maintain coherence.
Time step control
When solving transport problems numerically, the user should account for the CFL (Courant-Friedrichs-Lewy) condition, which imposes a stability constraint on the time step. This condition ensures that numerical information does not propagate faster than the physical transport, preventing instability and ensuring accurate results. In OFFBEAT it is possible to enforce this condition by automatically adapting the time-step based on the user indication of the maximum allowed Courant number. This is specified in the system/controlDict dictionary together with the other time-stepping criteria:
Maximum Courant number values in the range between 0.1 and 1 are recommended for porosity migration simulations.
Postprocessing
For this case, the custom OFFBEAT postprocessing functionObjects have been used to extract relevant figures of merit for the fuel performance simulations. The set of custom function objects needs to be loaded in the system/controlDict file together with liboffbeat.so and libsciantix.so:
The desired functionObjects can be set in the functions dictionary of the system/controlDict file:
functions
{
// Output rod internal pressure
writePressure
{
type rodPressure;
}
// Output central void radius at Peak Power Node
centralVoid_PPN
{
type centralVoidRadius;
axialPositions (1.10);
criterion porosityBased;
poroThreshold 0.75;
annularFuel off;
}
// Output gap size @ PPN
gapSize_PPN
{
type patchProbes;
libs ("libsampling.so");
patchName fuelOuter;
fields ( gapWidth );
writeControl runTime;
writeInterval 1;
probeLocations ( ( 0 0 1.10) );
}
}
For this case, three functionObjects are defined:
-
rodPressure: A custom OFFBEATfunctionObjectthat monitors the rod's internal pressure over time and outputs the data to thepostProcessing/rodPressure/0/<name>.datfile, where<name>is the user-defined name for thefunctionObject(e.g.,writePressurein this case). -
centralVoidRadius: A custom OFFBEATfunctionObjectthat tracks the evolution of the central fuel void radius over time at specific heights, defined by theaxialPositionskeyword. For this case, only a single position corresponding to the peak power node location was selected. The central hole radius is evaluated based on a porosity threshold criterion, where fuel cells with porosity above a user-defined threshold are considered part of the central void. An alternative temperature-based criterion is also available. Results are written to thepostProcessing/centralVoidRadius/0/<name>.datfile. -
patchProbes: A standard OpenFOAMfunctionObjectthat allows monitoring the time evolution of a boundary field at specific locations, defined by theprobeLocationskeyword. In this case, the radial gap size (represented by thegapWidthpatch field) at the peak power node is selected. Results are written to thepostProcessing/gapSize_PPN/0/gapWidthfile.
Results
The plot in Figure 2 illustrates the time evolution of the central void radius at the peak power node. The results indicate that within the first few days of irradiation, a central void of approximately 0.22 mm is formed. After this initial phase, porosity migration slows down, and the void size remains relatively constant.
The porosity migrated towards the pellet center impacts the local power production, as the fuel material migrates outwards. This is modelled in OFFEBAT by rescaling the power density Q and the thermal conductivity k. The effect of porosity fractional concentration after 1 month (shown in Figure 3) on power and temperature distributions, is shown in Figures 4 and 5.
![]() |
![]() |
|---|---|
| Figure 4: Temperature distribution after 1 month. | Figure 5: Power density distribution after 1 month. |

