Skip to content

Nuclear Fuel Cycle

denfry edited this page Oct 13, 2026 · 1 revision

Nuclear Fuel Cycle

Note

Design stage. This page describes planned mechanics from the design document. Not implemented yet — see Roadmap (milestone M4 for the simplified ore → metal chain of the T0 pile; M9 for hydrometallurgy, conversion, the centrifuge cascade and fuel assemblies; M12 for spent fuel storage, PUREX, MOX and disposal).

The nuclear fuel cycle is the top of the industry ladder. You find uranium with a radiometer, mine and leach it into yellowcake, refine and convert it to UF₆, enrich it in a cascade of gas centrifuges spun by Create shafts, press and sinter pellets, load them into zirconium tubes and build fuel assemblies. After the reactor, spent fuel cools in a pool, goes to dry casks or a hot cell for PUREX reprocessing, plutonium becomes MOX, and high-level waste is vitrified and buried in a geological repository.

Chemistry is physical: stoichiometry, yields, energy per kilogram of product and radioactive decay are real. Only two scaling points are tuned for game pace:

Config key Default Meaning
chain.ore_yield_multiplier 8 [BALANCE] Ore mass per mined block = 2500 kg × k_ore. A block of ore is a "window" into an ore body that continues beyond the voxel. Without it, the first T2a core needs ≈ 2000 blocks of 0.5 % ore; with 8, about 260 (2–3 ore bodies).
enrichment.swu_multiplier 16 [BALANCE] Separative capacity of each centrifuge is multiplied by this factor. Energy per SWU stays physical.

Chemistry runs in the SLOW domain (×72): one physical minute of a process takes 0.83 real seconds. Process times in the GDD are physical; real time = physical / 72. Energy per kilogram of product stays physical, so instantaneous power drawn from Create shafts or the grid is 72 times the physical power of the same unit. Create machines running their own recipes (crushing wheels, millstones, fans) work in real time; ore preparation is a bottleneck that scales with the number of machines, not with time acceleration.

Conventions

Carrier Mass
Ore block/item (raw_*) 2500 kg × k_ore
Powders (yellowcake, uo2_powder, uf4_powder, puo2_powder, …) 10 kg per item
Liquids 1 mB = 1 L (1 bucket = 1 m³ = 1 block)
UF₆ and other gases stored as mass in containers (uf6_cylinder_*), not as mB
fuel_pellet_tray 10 kg UO₂ (≈ 2000 pellets)

Continuous properties are quantized so items stack: ore grade in 6 classes, enrichment in 0.01 % steps.

Every block and fluid in the chain carries hazard tags used by radiation, accident and damage systems:

Tag Meaning
RADIOLOGICAL_EXTERNAL gamma/neutron source
RADIOLOGICAL_INTERNAL dispersible radioactive material; spills go to the contamination map
CHEMICAL_CORROSIVE H₂SO₄, HNO₃, HF — damage, corrodes containers made of non-resistant materials
CHEMICAL_TOXIC UF₆/HF, F₂, NH₃, H₂S — poisoning, toxic cloud
FLAMMABLE / EXPLOSIVE_MIX H₂, kerosene
PYROPHORIC uranium metal powder, fine UO₂, zirconium sponge, Mg
FISSILE uranium above 1 % enrichment, any plutonium — criticality checks
DECAY_HEAT spent fuel, high-level waste

Overview of the chain

# Stage Key blocks Estimated player time Unlocks
1 Exploration scintillation_radiometer, core_drill, assay_station 1–2 h an ore body of grade G2 or better
2 Mining and ore preparation Create drill, crushing_wheel, ball_mill, radiometric_sorter 2–4 h —
3 Reagents acid_plant, electrolyzer, ammonia_synthesis_reactor, ostwald_converter 3–5 h H₂SO₄, NH₃, HNO₃, H₂
4 Hydrometallurgy leach_tank, thickener, ion_exchange_column / mixer_settler, precipitation_tank, rotary_calciner, tailings_dam 3–5 h yellowcake
5 Refining, UO₂/UF₄, uranium metal dissolver, pulsed_column, denitration_reactor, reduction_furnace, hf_kiln, hydrofluorination_reactor, bomb_reduction_vessel 4–6 h nuclear-grade U, T0 slugs; with acheson_furnace graphite → T0 reactor
6 Zirconium chlorinator, hafnium_separation_column, kroll_reactor, pilger_mill 4–6 h cladding; Hf for control rods
7a Natural UO₂ → T3 pellet_press, sintering_furnace, heavy water (gs_exchange_tower) 6–10 h T3 (CANDU) without enrichment
7b Fluorine and UF₆ fluorine_cell, fluorination_reactor, cold_trap, uf6_cylinder_48y 3–5 h UF₆
8 Enrichment gas_centrifuge (T-A → T-B → T-C), cascade_* 6–12 h + cascade run time 2 % → T1; 3–5 % → T2a/T2b
9 Fuel fabrication defluorination_kiln, pellet_press, sintering_furnace, centerless_grinder, pellet_inspection_station, rod_loading_station, assembly_jig 4–6 h T1/T2 fuel assemblies
10 Spent fuel pool, refueling_machine, dry_cask, transport_cask 3–5 h cooling (STORAGE)
11 Radiochemistry hot_cell, shearing_machine, dissolver, pulsed_column ×N, oxalate_precipitator, criticality_alarm 8–15 h PuO₂, reprocessed U → MOX, T4 (post-release)
12 Waste vitrification_melter, cementation_mixer, repository_controller, copper_canister, bentonite_buffer 4–8 h closing the cycle; advancement "Closed Cycle"
flowchart LR
  ORE[(Uranium ore)] --> MILL[Crushing and ball mill] --> LEACH[Leaching H2SO4] --> SX[Ion exchange / solvent extraction] --> YC[(Yellowcake U3O8)]
  YC --> TBP[Dissolution + TBP extraction] --> UO3[UO3] --> UO2[UO2] --> UF4[(UF4)]
  UF4 --> UMET[U metal] --> SLUG[T0 slugs]
  UF4 --> UF6[(UF6)] --> CASC[Centrifuge cascade on Create shafts]
  CASC --> LEU[(Enriched UF6)]
  CASC --> DUF6[(Depleted UF6)]
  LEU --> PEL[Pellets] --> ROD[Fuel rods + He] --> FA[(Fuel assembly)]
  ZR[Zircon → Zr, Hf removed] --> ROD
  SLUG --> R{{Reactor}}
  FA --> R
  R --> SNF[(Spent fuel)] --> POOL[Spent fuel pool] --> DRY[Dry storage]
  POOL --> PUREX[PUREX]
  PUREX --> PU[(PuO2)] --> MOX[MOX] --> FA
  DUF6 --> MOX
  PUREX --> HLW[(Liquid HLW)] --> VIT[Vitrification] --> GEO[Geological repository]
  DRY --> GEO
Loading

Exploration models

1. Exploration and ore deposits

Minerals

Ore block Mineral Deposit type (prototype) In-game grade By-products
uraninite_ore, deepslate_uraninite_ore uraninite / pitchblende, UO₂ hydrothermal vein 0.1–2 % U₃O₈ (median 0.4 %) radiogenic Pb, As, Co; radiogenic helium
coffinite_ore coffinite sandstone roll-front (suitable for in-situ leaching) 0.05–0.3 % (median 0.1 %) Mo, Se, V
carnotite_ore carnotite near-surface sandstone 0.1–0.5 % (median 0.2 %) V₂O₅ 1–3 % (vanadium catalyst for sulfuric acid)
monazite_sand monazite in placers beach heavy-mineral sands ThO₂ 6–8 % in concentrate; U₃O₈ 0.2–0.4 % rare earths
zircon_sand zircon, ZrSiO₄ same placers 1–5 % zircon in sand Hf (must be removed for cladding; valuable for control rods)
fluorite_ore fluorite, CaF₂ vein 30–80 % CaF₂ —
pyrite_ore pyrite, FeS₂ disseminated 20–60 % source of SO₂
galena_ore galena, PbS vein 5–20 % Pb silver
bauxite_ore bauxite lateritic, tropics 40–60 % Al₂O₃ —
borax_ore borax evaporite, deserts 20–40 % —
thorite_ore thorite, ThSiO₄ granite pegmatites 1–5 % ThO₂ U

Thorium in release 1.0 is a material for post-release content and a source of background radiation (Tl-208, 2.614 MeV gamma); the thorium fuel chain is not implemented.

World generation

Ore Host Y range Biomes Body shape Size, blocks
uraninite deepslate, tuff, granite −64…−8, peak −40 all Overworld; mountains ×1.5 elongated vein along a "fracture", length 8–24 12–40
coffinite stone, sandstone 0…48, peak 24 desert, badlands, savanna ×2 C-shaped roll-front lens 6×12×3 30–90
carnotite sandstone, terracotta 50…90 badlands ×3, desert disseminated pockets 3–8
monazite, zircon sand sand, gravel 55…66 beach, river, stony shore 1-block layers under the surface 8–30
thorite granite −32…32 mountains ×2 pegmatite pocket 2–5

Generation uses standard datapack features with NeoForge biome modifiers and can be disabled per ore (worldgen.<ore>.enabled).

Hidden grade

You can see that a block is ore (pitch-black uraninite with a greasy luster, canary-yellow carnotite, black-brown coffinite in sandstone). You cannot see its grade, the U/Th ratio, or the halo — surrounding rock with sub-economic grade (0.01–0.05 %) that looks like ordinary stone. Grade is deterministic from the world seed, log-normally distributed (σ_ln = 0.9) on 3D simplex noise, clamped to 0.05–2 %. With worldgen.halo_drops, breaking halo rock yields raw_low_grade_uranium_ore for heap leaching.

Grade class % U₃O₈ Typical use
G0 0.02–0.05 halo, heap or in-situ leaching only
G1 0.05–0.10 low grade
G2 0.10–0.25 ordinary
G3 0.25–0.50 rich
G4 0.50–1.00 very rich
G5 1.00–2.00 exceptional

The cut-off grade is your decision. /pc assay economics <grade> shows the processing cost (acid, energy, tailings) so you can decide what goes to the mill and what goes to the dump.

Exploration instruments

ID Prototype Shows Error / lag
scintillation_radiometer (item) SRP-68, NaI(Tl) count rate, clicks Poisson noise, 1 s time constant; 100 h battery
gamma_spectrometer (item) field NaI(Tl) 3″×3″ K / U / Th windows, U/Th ratio, grade estimate ±15 % over 60 s
core_drill (block, Create shaft) core drilling rig extracts a core_sample down to 64 m the sample is real; it still has to be assayed
assay_station (block) fluorimetry / XRF lab exact grade ±2 %, U/Th, impurities 60 physical s per sample, 200 W

The spectrometer uses standard windows (K-40 at 1.461 MeV, Bi-214 at 1.764 MeV for uranium, Tl-208 at 2.614 MeV for thorium). The U/Th ratio tells monazite from uraninite — a thorium anomaly is useless for the uranium chain. Without an assay_station you only see the rock log from a core, not the grade.

The core drill speed follows rock breakage energy (granite ≈ 2·10⁸ J/m³): with 20 kW (20 SU) a 64 m hole takes about 40 real seconds. Radon accumulates in underground workings and feeds the radiation model.

2. Mining and ore preparation

Ore is mined with Create drills, crushed with crushing_wheel, ground in a ball_mill and optionally pre-sorted in a radiometric_sorter.

Heap leaching (grades G0–G1 and halo): a continuous heap_leach_liner base (a gap leaks solution into the ground and contaminates it), ore_heap blocks on top, a drip_irrigator feeding acid, pls_collector and pls_pond around the base. Recovery R(t) = 0.75·(1 − e^(−t/τ)), with τ growing with the square of particle size. 90 % recovery takes about 69 physical days ≈ 23 real hours, running in the background. Acid consumption: 15–40 kg H₂SO₄ per tonne of ore.

In-situ leaching (ISL) — only for coffinite_ore in permeable sandstone below the water table. isl_injection_well and isl_production_well are placed on the surface in a five-spot pattern (4 injectors, 1 producer, 25–50 m spacing). Concentration decays exponentially as the ore is swept. Injection must stay 1–3 % below production ("bleed"); otherwise solution escapes the wellfield (an excursion) and dissolved U and Ra contaminate nearby water. Monitor with isl_monitor_well.

3. Hydrometallurgy: ore to yellowcake

ground ore ─► leach_tank ×N (H₂SO₄ + oxidant) ─► thickener ×3 (counter-current decantation) ─► pregnant solution
                                                      └─► tailings ─► tailings_neutralizer ─► tailings_dam
pregnant solution ─► ion_exchange_column or mixer_settler (amines) ─► eluate
                  ─► precipitation_tank (NH₃ / H₂O₂ / NaOH) ─► ADU / UO₄
                  ─► rotary_calciner 750–800 °C ─► yellowcake (≥ 85 % U₃O₈)

Acid leaching is the main route; carbonate (soda) leaching is used for carbonate-rich ores. Sulfuric acid comes from pyrite or from sulfur produced by the gas plant (sulfur_burner) — one of the cross-industry links (see Progression).

Tailings keep about 85 % of the ore's original radioactivity (Th-230, Ra-226 and the rest of the decay chain stay; only uranium leaves). The tailings_dam must be sealed with clay / tailings_liner. Water over the tailings suppresses radon; dry tailings emit radon and dust. Reclamation: radon flux through clay falls as e^(−x/0.31 m), so meeting the 0.74 Bq·m⁻²s⁻¹ limit needs 2 blocks of clay plus a block of vegetated soil. Lime neutralization with barium co-precipitation cuts radium in effluent 100–1000 times.

Hydrometallurgy models

4. Refining and conversion: yellowcake to UF₆

yellowcake ─► dissolver (HNO₃) ─► uranyl nitrate (≈ 300 g U/L)
           ─► pulsed_column (30 % TBP in kerosene: extraction, scrub, strip)
           ─► pure uranyl nitrate ─► evaporator ─► denitration_reactor 300–400 °C ─► UO₃ (orange oxide)
           ─► reduction_furnace, H₂, 600–650 °C ─► UO₂ (brown)
           ─► hydrofluorination_reactor, HF, 450–550 °C ─► UF₄ (green salt)
               ├─► bomb reduction with Mg ─► uranium metal (T0 slugs, `uranium_slug`)
               └─► fluorination_reactor (flame tower), F₂ ─► UF₆ ─► cold_trap ─► uf6_cylinder_48y

HF comes from fluorite; fluorine from electrolysis of KF·2HF in a fluorine_cell.

UF₆ handling

Property Value
Triple point 64.05 °C, 151.7 kPa
Sublimation at 1 atm 56.5 °C
Vapor pressure at 25 °C ≈ 15 kPa
Hydrolysis UF₆ + 2 H₂O → UO₂F₂ + 4 HF — fast, exothermic, white cloud
Container Prototype UF₆ capacity Enrichment limit Use
uf6_cylinder_48y ANSI N14.1 48Y 12,501 kg 4.5 % natural and depleted UF₆
uf6_cylinder_30b 30B 2277 kg 5.0 % LEU product
uf6_cylinder_5a 5A 24.95 kg up to 20 % in game HALEU

Rules: fill ≤ 62 % of volume as solid (liquid UF₆ expands about 40 % when heated — overfilling ruptures the cylinder above the triple point); withdrawal only through a uf6_autoclave (heating to 90–110 °C); a dropped or punctured cylinder releases UF₆ at a rate limited by sublimation; a cylinder refuses enrichment above its type limit. Each kilogram of released UF₆ produces 0.227 kg HF and 0.875 kg UO₂F₂. For natural and low-enriched UF₆, chemical toxicity (uranium to the kidneys, HF) dominates over radiological dose.

5. Enrichment: gas centrifuges on Create shafts

Enrichment models

A gas centrifuge is a thin-walled rotor spinning in a vacuum casing. The elementary separation factor comes from the Boltzmann distribution in the centrifugal field, and maximum separative power from the Dirac limit, proportional to the fourth power of wall speed. Everything depends on rotor strength: burst speed √(σ/ρ) does not depend on radius.

Rotor tiers

Parameter T-A: aluminium 7075 T-B: maraging steel T-C: carbon fiber (CFRP)
Rotor item centrifuge_rotor_aluminum centrifuge_rotor_maraging centrifuge_rotor_cfrp
Burst speed 450 m/s 500 m/s 866 m/s
Nominal wall speed 350 m/s 430 m/s 650 m/s
Separation factor α 1.121 1.188 1.482
Separative power, SWU/physical year 3.88 11.37 72.5
Rotor kinetic energy 0.49 MJ 1.39 MJ 2.12 MJ
Specific energy 200 kWh/SWU 100 kWh/SWU 50 kWh/SWU

The gas_centrifuge is a 1×1×2 block with a built-in speed multiplier on a Create shaft. Rotors accumulate damage; run them too fast and they fail.

Cascade

Block Role
gas_centrifuge machine; the rotor is inserted as an item (component rotor_state: tier, damage, hours)
cascade_header stage header with feed / light / heavy lines; machines touching one continuous header form a stage
cascade_interstage_pipe light fraction of stage s → feed of s+1; heavy fraction of s+1 → feed of s
cascade_feed_station feed point; owner of the CentrifugeCascade object and the pc_cascade peripheral
cascade_product_station product take-off into uf6_cylinder_30b / 5a via cold_trap
cascade_tails_station tails into uf6_cylinder_48y
cascade_isolation_valve fast isolation valve on a header (0.2 s)

The cascade must be a linear chain (no branches, one feed station, no loops). The operator sets feed and product flow; a steady-state solver runs at 1 Hz. In cold biomes, UF₆ desublimates in headers below about 9 °C: without trace_heater (50 W/m) the header gradually clogs, visible as rising header pressure.

Cascade crash. When a rotor fails, its energy is released; the casing contains fragments, but neighbors within 2 blocks take damage, and the gas shock in the header slows every machine in the stage. Without fast isolation the stage collapses in 3–10 s, then neighboring stages through the interstage pipes — a cascade accident, as in real plants. cascade_isolation_valve closes at 1.5× nominal header pressure in 0.2 s, if installed and not blocked by Lua. The pc_cascade peripheral emits a cascade_crash event. Released UF₆ forms an HF cloud.

Depleted UF₆ (tails 0.20–0.30 %, default 0.25 %) is stored in 48Y cylinders — 8 kg of tails per kg of 4.4 % product. Uses: depleted_uranium_ingot (shielding denser than lead), the MOX matrix, or re-enrichment of tails. Cylinders stored outdoors corrode.

Separative work

Feed 0.711 %, tails 0.25 %:

Product enrichment Feed per kg product SWU per kg product
2.0 % 3.80 kg 1.915
3.0 % 5.97 kg 3.811
4.4 % 9.00 kg 6.662
20 % 42.8 kg 41.58
Rotor tier SWU per real hour (multiplier 16) Machine-hours per kg of 4.4 % Shaft power per machine
T-A aluminium 0.510 13.06 102 kW
T-B maraging steel 1.494 4.46 149 kW
T-C CFRP 9.533 0.699 477 kW

Calibration: a 100-machine T-C cascade produces a starting T2a core (≈ 2.4 t U at 4.4 %, about 16,000 SWU) in 16.8 real hours, drawing 47.7 MW (47,700 SU) from Create shafts. The bottleneck is instantaneous power before you have a reactor. Alternatives: a smaller cascade and more time; the T3 (CANDU) branch with natural uranium and heavy water; or T1 at 2 % (5745 SWU) with a 40-machine T-B cascade in 96 h at 6 MW, within reach of Create steam engines. The full-size PR-300 reference core needs about 82,500 SWU — a deliberate megaproject.

6. Fuel fabrication

Fuel fabrication models

UF₆ → UO₂

defluorination_kiln, two routes:

  • Dry route (IDR) — main: UF₆ + steam → UO₂F₂ → UO₂ with H₂ at 600–700 °C. 0.504 kg of HF per kg U is returned to hydrofluorination — a closed fluoride loop. Residual fluorine above 100 µg/g corrodes cladding from the inside.
  • Wet route (ADU) — historical, available earlier; the powder presses slightly worse (−2 % pellet density).

Enriched UO₂ powder is limited to 50 kg U per container at ≤ 5 % (fissile.powder_batch_limit_kg_u). Powder flooded by firefighting water is a classic criticality scenario.

Pellets

pellet_press, sintering_furnace, centerless_grinder (±12 µm), then pellet_inspection_station. Each check can be switched off; a skipped check lets defects through and raises the fuel rod failure probability:

Check Method Criterion Consequence of a missed defect
Density hydrostatic weighing 0.945–0.965 of theoretical densification in reactor, larger gap, fuel overheating; or swelling
Enrichment gamma spectrometry, 185.7 keV line of U-235 ±0.05 % absolute power peak in the assembly
Hydrogen hot extraction ≤ 1.3 µg H/g UO₂ internal cladding hydriding — ×20 failure chance
Geometry laser micrometer ±12 µm jamming during rod loading
Chips machine vision none pellet-cladding interaction — ×3 failure chance during power maneuvers

Pellet trays stored outside a dry_storage_cabinet in humid biomes pick up moisture.

Zirconium cladding

Hafnium absorbs thermal neutrons 560 times more than zirconium (104 b vs. 0.185 b). Natural zircon has about 2 % Hf, which makes the alloy absorb 6.7 times more than pure Zr. Nuclear grade is Hf ≤ 100 µg/g.

Stage Process Block
Sand beneficiation gravity, magnetic and electrostatic separation Create fans/belts + mineral_separator
Carbochlorination ZrSiO₄ + 4 C + 4 Cl₂ → ZrCl₄ + SiCl₄ + 4 CO, 1000–1100 °C chlorinator (Cl₂ from chlor_alkali_cell)
Hafnium removal fractional crystallization of K₂ZrF₆, ≈ 16 recrystallizations for 2 % → 100 ppm hafnium_separation_column
Kroll reduction ZrCl₄ + 2 Mg → Zr + 2 MgCl₂, 800–900 °C under Ar kroll_reactor
Alloy Zircaloy-4 (Zr–1.5Sn–0.2Fe–0.1Cr) or E110 (Zr–1Nb) vacuum_arc_furnace
Tube pilger rolling, 3–4 passes pilger_mill (Create)
Inspection ultrasound, eddy current ultrasonic_tester

By-product: hafnium (hafnium_ingot) for control rods. The cleaner the cladding, the more hafnium for rods. Zirconium sponge is pyrophoric.

Fuel rods and assemblies

rod_loading_station loads the pellet stack, inserts a plenum spring, fills with helium at 2.0 MPa (chain.rod_he_fill_pa), and rod_welder seals the end plugs, followed by a helium leak test. Helium comes from the gas plant, or as radiogenic helium collected while crushing uraninite (gas_collector over a crushing_wheel; about 12 L per kg U).

assembly_jig is a multiblock fixture 1–4 blocks tall (= active length in meters):

AssemblyType Prototype Rods Pellet Ø, mm Cladding Enrichment kg U per m Tier
T0_SLUG_CARTRIDGE X-10 U metal slugs in Al cans — aluminium natural 10.6 T0
T1_CHANNEL_BUNDLE RBMK-like 18 11.5 E110 1.8–2.4 % 17.1 T1
T2A_HEX VVER 312 7.57 E110 3–5 % ≈ 124 T2a
T2A_SQ PWR 17×17 264 8.19 Zircaloy-4 3–5 % 127 T2a
T2B_BWR BWR 10×10 92 8.67 Zircaloy-2 2–4 % 50 T2b
T3_CANDU37 CANDU 37-element 37 12.15 Zircaloy-4 natural 39.6 T3
MOX_HEX, MOX_SQ MOX as T2A as T2A as T2A Pu 7–9 % in depleted U as T2A T2a/T4

A fuel_assembly item carries promptcritical:fuel_spec (immutable fabrication data) and promptcritical:fuel_state (burnup, nuclide inventory, cladding state). Rod failure probability per cycle starts at 10⁻⁵ per rod and is multiplied by fabrication defects (hydrogen ×20, skipped weld inspection ×10, chips ×3, density out of spec ×2, fluorine ×2). A 312-rod assembly without defects has a 0.3 % chance of a leaker; with a skipped hydrogen check, 6 %.

Other core materials

  • Nuclear graphite (moderator_block_graphite): petroleum or pitch coke + pitch binder → forming → baking → impregnation → graphitization at 2800–3000 °C in the acheson_furnace (≈ 4 kWh/kg). Boron is removed with chlorine. Each ppm of boron adds +25 % to graphite absorption; unpurified graphite (2–10 ppm) cannot make T0 critical.
  • Heavy water (heavy_water, T3): electrolysis cascade (≈ 205 MWh per kg D₂O) or the Girdler sulfide process in gs_exchange_tower pairs (1/20 of the energy, but uses lethal H₂S from the gas plant), finished by vacuum distillation.
  • Control rod absorbers: B₄C (from borax, made in the acheson_furnace), hafnium, Ag–In–Cd 80/15/5, dysprosium titanate. boric_acid_solution for T2a boron control and spent fuel pools.

7. Spent fuel: unloading, cooling, storage

Spent fuel models

Unloading uses the refueling_machine under water: an assembly is never raised so that less than 2.5 m of water covers it (pool.min_transfer_cover_m; the interlock can only be bypassed with protection disabled, and that is logged). Dropping an assembly is a fuel handling accident: some rods fail and release Kr-85, Xe-133 and I-131. On unloading, fuel_state records the shutdown time and prior power for decay heat and the radiation source term.

Spent fuel pool

Block Role
fuel_pool_liner stainless steel liner; a missing block leaks 1 m³/h of contaminated water into the ground
fuel_pool_rack 1 assembly per block; _open and _borated (B₄C/Al plates) variants
fuel_pool_cooling_port cooling loop connection; pool water is radioactive, so only the mod's pipes up to the heat exchanger
pool_heat_exchanger heat exchanger on service water
pool_cleanup_filter ion-exchange filter; accumulates activity and becomes intermediate-level waste
pool_gate gate between pool and transfer canal
pool_boron_sampler boron meter (10 physical minutes analysis delay)

Peripheral: pc_fuel_pool. Tags: pool<N>.temperature, pool<N>.level, pool<N>.cover, pool<N>.boron, pool<N>.heat_load, pool<N>.cooling.flow.

Example: a 600 m³ pool with 1 MW of decay heat loses cooling at 40 °C. It reaches 100 °C in 35 real minutes; after boiling starts, the water boils down to 3 m above the fuel in 1.9 real hours. Then dose rate in the hall rises, and uncovered fuel overheats.

Racks must stay at k_eff ≤ 0.95 with design boron (2000 ppm) and k_eff < 1 in clean water. Diluting the pool with the "wrong" water from a Create pipe is a real class of event (boron dilution); k_eff ≥ 1 triggers a criticality excursion at the rack.

STORAGE time

storage.k_storage = 8766: one real hour = one physical year. Five years of cooling = five real hours ("let it sit while you build the radiochemistry plant"). A thousand years of disposal = 41.7 real days: a bad repository shows its problems within a server's lifetime, a good one does not.

Fuel ages in STORAGE time only under proper storage conditions; otherwise it ages in SLOW time:

Location STORAGE conditions
fuel_pool_rack pool below 60 °C, ≥ 3.0 m of water over fuel, boron ≥ 0.9 × design for open racks
dry_cask cladding below 400 °C, ≥ 75 % of vents open
hlw_tank cooling and purge running
repository always
player inventory, chest, ground never

Dry storage

dry_cask is a 3×3×5 multiblock: welded steel canister, 0.7 m concrete overpack with steel, and ventilation channels. Loading procedure: EMPTY_IN_POOL → LOADED_WET (heat ≤ 35 kW) → LID_ON → DRAINING (lifting out exposes the player) → VACUUM_DRYING (residual water < 0.1 %, otherwise ×5 failure chance) → HE_BACKFILL (0.2 MPa) → WELDED → STORED. 35 kW gives about 300 °C cladding; blocking half the vents (blocks, snow, water) pushes it to 580 °C, out of STORAGE and towards cladding failure.

Transport

transport_cask weighs 100 t (Slowness IV in inventory; move it with Create contraptions or trains). IAEA limits: ≤ 2 mSv/h on the surface, ≤ 0.1 mSv/h at 2 m; the cask refuses to close if exceeded. Drop tests as gameplay: a fall above 9 m has a 5 % chance to breach the cask, above 30 m 50 %; more than 30 s in lava, 20 %.

8. Radiochemistry: PUREX and MOX

Radiochemistry models

Typical spent fuel per tonne of initial heavy metal (45 GW·d/t, 5 years cooling): ≈ 941 kg U (0.8 % U-235, 0.55 % U-236), ≈ 11.5 kg Pu, ≈ 46 kg fission products (including ≈ 1.5 kg Cs-137), ≈ 1.3 kg minor actinides. In game, these come from the nuclide inventory.

All spent fuel work happens in a hot_cell: heavy concrete walls, lead glass hot_cell_window, master_slave_manipulator. Irradiated items emit radiation; opening a machine GUI outside the hot cell exposes the player.

Head end

Stage Process Block
Shearing assembly cut into 3–5 cm pieces on a Create shaft shearing_machine
Dissolution 7–10 M HNO₃, 95–100 °C dissolver (geometrically safe)
Off-gas iodine on silver zeolite, NOₓ absorption, Kr-85 to the stack offgas_treatment, iodine_filter_agz, vent_stack
Hulls insoluble Zr cladding and nozzles (Co-60, Ni-63) hulls_drum (intermediate-level waste)
Clarification removal of insoluble metallic particles clarifier

Solvent extraction (30 % TBP in dodecane)

  1. First cycle: U(VI) and Pu(IV) are extracted into TBP; ≥ 99.9 % of fission products stay in the aqueous raffinate (high-level waste).
  2. Partition: U(IV) with hydrazine reduces Pu(IV) to Pu(III), which goes back to the aqueous phase.
  3. Uranium and plutonium purification cycles, overall decontamination factor 10⁶–10⁸.
  4. Plutonium is precipitated as oxalate in a geometrically safe oxalate_precipitator and calcined to puo2_powder (oxalic acid is made from sugar and nitric acid).

The solvent degrades under radiation; above 5 % degradation plutonium is retained in the organic phase — hidden plutonium buildup in the solvent is a criticality factor.

Am-241 ingrowth. Pu-241 (14.3 years) decays to Am-241 with a 59.5 keV gamma, so stored PuO₂ gets "hotter". MOX should be made within 2–3 physical years (2–3 real hours in STORAGE), or the plutonium must be purified again.

MOX (MIMAS process): master blend UO₂ + 30 % PuO₂ in a depleted-uranium matrix, diluted to 7–9 % Pu, pressed and sintered as usual. The assembly_jig passes the full nuclide vector to the reactor lattice model and shows the resulting k∞ ("design calculation"). All operations happen in a glovebox (alpha contamination, neutron background from Pu-240, Pu-238 heat at 0.57 W/g).

Reprocessed uranium contains U-236 (a neutron absorber requiring extra enrichment) and traces of U-232, whose daughter Tl-208 emits a 2.614 MeV gamma. U-232 concentrates in the cascade product, so reprocessed-uranium fuel needs shielding.

Criticality safety outside the reactor

Double contingency: an accident requires two independent unlikely failures. Controls available as blocks:

Control In game
Geometry geometrically safe equipment: annular_tank, slab_tank, small-diameter pipe vessels. Safety is computed, not declared
Mass fissile mass limits per batch/vessel; fissile_batch_counter tracks item movement (tag fissile.<area>.mass)
Concentration g/L control for solutions (analysis delay)
Moderation no water in dry powder areas — water firefighting in a MOX area is a violation
Absorbers borosilicate raschig_rings, soluble gadolinium
Alarm criticality_alarm (CAAS): 3 detectors, 2-of-3 logic, siren, pc_rad_monitor event

Reference minimum critical values (water reflected, optimally moderated): U-235 solution ≈ 0.82 kg, infinite cylinder ≈ 13.7 cm, slab ≈ 4.4 cm, ≈ 11.6 g/L; Pu-239 ≈ 0.51 kg, cylinder ≈ 15.4 cm, ≈ 7.2 g/L.

The SolutionCriticality model uses one-group diffusion theory. If a vessel goes prompt critical, the first spike is 10¹⁵ fissions per liter (calibrated on the 1999 JCO accident), followed by a quasi-steady boiling phase that lasts until geometry or composition changes. Unshielded dose at 1 m is about 8·10⁻¹⁶ Sv per fission — 4·10¹⁶ fissions give 32 Sv. You see a blue flash; part of the solution boils out. Blocks are not destroyed — a solution excursion is not an explosion.

Radiochemical accidents

Scenario In-game condition Consequence
Red oil TBP carried into the evaporator (> 0.5 vol %) above 130 °C vessel explosion, release
Extraction fire spilled kerosene/dodecane + ignition fire, aerosol
HLW tank explosion hlw_tank without cooling dries out, nitrate-acetate salts above 600 K explosion, large-scale contamination
Hydrogen in HLW tanks radiolysis; without purge H₂ exceeds 4 % explosive mixture; 100 kW of decay heat needs ≥ 10 m³/h of purge air
Criticality excursion see above dose, contamination

hlw_tank is a stainless tank with cooling coils, a Create agitator and a purge; about 90 % of spent fuel heat goes to the raffinate. Tags: hlw<N>.temperature, hlw<N>.level, hlw<N>.h2.fraction.

9. Radioactive waste

Waste models

Classification

Classes are computed for any item or container with a nuclide inventory or contamination:

Class Beta-gamma, Bq/kg Alpha, Bq/kg Heat Route
VLLW < 10⁶ < 10⁵ — near-surface trench
LLW 10⁶–10⁷ 10⁵–10⁶ — compaction → near-surface repository
ILW 10⁷–10¹⁰ 10⁶–10⁹ < 2 kW/m³ cementation → near-surface or intermediate depth
HLW > 10¹⁰ > 10⁹ ≥ 2 kW/m³ vitrification → geological disposal

Waste items get a promptcritical:waste_class component. Dropping one on the ground creates an orphan source.

Conditioning

Process Input Output Block
Compaction LLW (rags, protective gear, filters) waste_drum, ×5 volume reduction waste_compactor (Create press)
Cementation ILW sludge, hulls, resins cemented_waste_drum (200 L) cementation_mixer; portland_cement from cement_kiln (or blast furnace slag)
Bituminization ILW salts bitumen_waste_drum — cheap but flammable above 200 °C bitumenizer
Vitrification liquid HLW + sand, borax, soda hlw_glass_canister (400 kg glass, CSD-V prototype) at 1100–1150 °C vitrification_melter

Without offgas_treatment, vitrification releases Cs and RuO₄. A glass canister from 5-year-cooled fuel produces about 1.5–2 kW of heat.

Geological disposal

The multi-barrier system follows the Swedish KBS-3 concept:

Barrier Block / item Model
1. Waste form glass / UO₂ / cement dissolution: glass 10⁻⁵/year, UO₂ 10⁻⁶/year, cement 10⁻³/year
2. Container copper_canister (5 cm Cu + cast iron insert), steel_overpack, waste_drum failure time: copper 10⁵ years, steel 10³, drum in soil 30
3. Buffer bentonite_buffer (compacted bentonite, 1 block) diffusion delay
4. Host rock surrounding blocks groundwater advection with sorption retardation

Bentonite is made from clay and tuff in a mineral_separator.

Site requirements, checked by repository_controller: depth ≥ 80 m (waste.repository_min_depth_m); host rock deepslate or tuff; ≥ 16 blocks from water, cave air or aquifers; no lava within 16 blocks. Violations do not forbid disposal — they make the model worse. You are free to bury waste badly.

Migration is computed analytically per package: a path search (up to 64 blocks) to the nearest exit (water, cave, surface), groundwater speed from block permeability, retardation per nuclide group from sorption coefficients. After container failure, activity reaches the exit delayed by travel time and reduced by decay, and enters the contamination map.

Block Hydraulic conductivity K, m/s
bentonite_buffer 10⁻¹³
concrete 10⁻¹¹
deepslate, clay 10⁻¹⁰
tuff 10⁻⁹
stone 10⁻⁸
sandstone, dirt 10⁻⁶
sand 10⁻⁴
gravel 10⁻²
  • Good site: copper canister, 1 block of bentonite, 50 m of deepslate. I-129 (no sorption) needs about 7900 years after the canister fails at 10⁵ years — about 12 real years. Never, in practice.
  • Bad site: a cement drum in gravel 10 m from a river. The drum fails after 30 years (30 real hours), Cs-137 arrives almost instantly in STORAGE time, and about 1.5 real days after burial the river starts carrying Cs-137 downstream.

See also

Clone this wiki locally