Paint fuel rods and coolant blocks, choose passive or active cooling, and the planner runs the mod's own ReactorLogic tick by tick until the reactor settles. You get the same RF/t, steam, temperatures and fuel burn the controller would show.
Packs change these a lot: ATM10 and ATM10: Aeronautics are 30× apart on turbines.
Top-down view of the inside. Fuel rods and coolant blocks run the full height. Control rods sit on the top casing above each rod column.
Assumes the reactor is kept topped up with fresh fuel, and waste is ejected automatically. Active mode assumes unlimited water in and steam pulled out as fast as it's made.
Each tick, exactly one fuel-rod block radiates, taking turns through every rod block. Its strength comes from the whole reactor's fuel, not its own share.
raw = totalFuel × fissionEventsPerFuelUnit scaled = ((raw^r) / columns)^r × columnsReactorLogic.radiate · FuelRodsMap.getNextIrradiationSource
Rays leave in the 4 directions perpendicular to the rods and stop after 4 blocks. Casing, glass and ports absorb whatever reaches them and waste it: it heats nothing.
for each of 4 sideways directions: step ≤ 4 blocks, stop at casingReactorLogic.radiate · AbstractReactorEntity.moderateRadiation
Each block absorbs part of the ray, turns some of that into casing heat and softens the ray, so the next rod catches more of it. Rods catch radiation as fuel heat.
absorbed = I × absorption × (1 − hardness) heat += absorbed × heatEfficiency × 10 hardness /= moderationMultiblockReactor.applyModerator
In passive mode, RF/t depends only on how hot the casing is and how much inside surface the reactor has.
RF/t = 0.06 × internalArea × (T − 20)
× powerMultipliers × tierEfficiency
ReactorLogic.transferHeatBetweenReactorAndCoolant
Heat moves from the fuel rods to the casing, never back. How fast depends on what touches each rod: casing 0.6, air 0.05, other rods 0.05, and each coolant block its own conductivity.
if (fuelT − casingT > 0.01) q = ΔT × Σ neighbour conductivityReactorLogic.transferHeatBetweenFuelAndReactor
Radiation soaked up by rods builds a hidden fertility value. The controller never shows it, but it divides your fuel burn by log₁₀(fertility) + 1.
fuel/t = 7e-4 × raw / (log10(fertility) + 1)
× fuelUsageMultiplier
ReactorLogic.radiate · getFertilityModifier