HBM's NTM Research Reactor Calculator

Formulas from the HBM's Nuclear Tech Mod 1.7.10-1.0.27 source

Paint plate fuel into the 12-slot core and watch the cascade: every plate amplifies the flux its neighbours fed it last tick, and the rod level scales how much of that output gets passed on. See steady flux, core temperature, breeder output, plate burn-up and the runaway threshold. Every number is the mod's own tick loop, transcribed from TileEntityReactorResearch and ItemPlateFuel — int casts included.

—

Drag to rotate. Right-drag, Shift-drag or two-finger drag to pan. Scroll or pinch to zoom. Each plate glows with the flux landing on it — brighter means the cascade feeds it harder.

Fuel plate grid

Pick a plate, then click slots to place it. The core is two sealed halves — flux never crosses from the left block (slots 0,1 / 5,6 / 10,11) to the right block (2,3 / 7,4 / 8,9), so each half needs its own source. A passive plate (Ra-226/Be, Pu-238/Be) makes its reactivity out of nothing; every other curve reacts only to the flux it receives. The cell border glows with the flux landing on that plate.

Steady state vs rod level

steady flux (per tick)equilibrium (°C)meltdown zone

At each rod level the flux cascade is iterated to its fixed point (amplifying layouts have none — the shaded zone runs away). Marker: your current level.

core (°C)flux (per tick)

Mod preset

Edit reactor constants (NTM ships these in code, not in a config file)

Operation

The rod chases the target at 0.04/t (2.5 s for full travel). Water counts the 2 blocks above + 2 below at distance 2 and the 3×4 belt of sides — max 12, worth 7% of the core's heat per tick; with zero water the core only sheds 1 heat per tick. The breeder machine next to the reactor eats its total flux: at recipe flux it finishes one item every 400 ticks (20 s). "Burn out" sim shows one plate load ending in waste.

Result

    The mod's per-tick loop, run for up to 1,000 seconds of game time, with the steady state solved by iterating the cascade. Heat is in HBM heat units; the °C figure is the reactor GUI's own conversion (heat×2e-5×980+20).

    Share this design

    The link opens this exact core. Paste a design code above to load one.

    What the code actually says

    Plates feed each other — and themselves

    Every tick, each plate reacts to the flux its neighbours output last tick (scaled by the rod level) and passes its own output on to them. That's a positive feedback loop through the whole core: the steady state is a fixed point of the cascade, found here by iteration, not by a formula.

    flux[nb] += (int)(out × level)
    out       = react(flux)        // int cast
    heat     += out × 2
    TileEntityReactorResearch.reaction

    Curve shape is the physics

    Sa-326 is LINEAR (out = flux/100·80): each generation multiplies flux by 0.8 × level per neighbour, so a full 6-loop at 100% rod amplifies 1.6× per tick — no steady state exists; it runs away into the 50,000-heat blast. U-233/U-235 (√flux) and Pu-239 (arch peaking at flux 5000, out ≤ 25·R/50) flatten out and settle. MOX's logarithm never stops climbing — it just crawls.

    LOG10: (int)(log10(x+1)·0.5·R)   SQRT: (int)(√x·R/10)
    NEGQ:  (int)max((x−x²/10000)/100·R, 0)
    LINEAR:(int)(x/100·R)   PASSIVE: R
    ItemPlateFuel.react · EnumPlateFuel, ModItems 3858-3899

    Water is capped — and thin

    getWater counts 2 water blocks above + 2 below at distance 2 and the 3-high, 4-side belt: 12 blocks max, worth heat×0.07×water/12 per tick — 7% at best. With no water the loop runs heat-- — one heat unit per tick. 12 blocks soak 14× the heat load of 1 block; there is no third tier.

    heat = (int)(heat − heat×0.07·water/12)
    // water == 0:  heat--
    °C = round(heat×2e-5×980 + 20)
    TileEntityReactorResearch.getWater · updateResources

    50,000 heat = strength-18 blast

    Heat over 50,000 (982 °C on the GUI scale) deletes the reactor, pops 12 water blocks, drops corium and dumps a 50 rad burst. While running with any unshielded side (lead/desh/hardness ≥100 blocks the line) the core radiates heat/50000×50 rad/s — 50 rad/s at the melt threshold. The margin shown is heat ÷ 50,000.

    meltdown: heat > 50000
    rad/s = heat/50000 × 50   // unshielded sides
    TileEntityReactorResearch.explode · radiation 121-135

    The breeder eats flux at 400 t/item

    Place the breeding machine beside the reactor and it sums the totalFlux of every adjacent research reactor, then progress += 0.0025 × flux/recipe.flux per tick. At exactly the recipe's flux that's 400 ticks (20 s) per item; half the flux doubles the time; below it the machine stalls at zero progress.

    progress += 0.0025 × flux / recipe.flux
    flux == recipe.flux → 1/0.0025 = 400 t/item
    TileEntityMachineReactorBreeding 52-63, 81-97

    There is an autopilot: Reactor Control

    The Reactor Control block links through a reactor sensor and drives the rod target automatically on a LINEAR/LOG/QUAD heat→level curve between two bounds. Rods always move at 0.04/t, so the control block sets where the rod chases, never how fast — the same rod speed this calculator simulates.

    LINEAR: (heat−lo)·(lvlHi−lvlLo)/(hi−lo)+lvlLo
    LOG:    ((heat−hi)/(lo−hi))²·(lvlLo−lvlHi)+lvlHi
    QUAD:   ((heat−lo)/(hi−lo))²·(lvlHi−lvlLo)+lvlLo
    TileEntityReactorControl 100-191 · getTargetLevel 175-187