Repository navigation
Oil and Gas
Note
Design stage. This page describes planned mechanics from the design document. Not implemented yet — see Roadmap (milestone M8).
Oil and gas is industrial era I2. You find a hydrocarbon trap with seismic and well logs, drill into it with real mud weight and a blowout preventer, produce oil and gas, separate and stabilize them, send them through pipelines with cathodic protection, and process them in an oil refinery and a gas processing plant. The products feed the rest of the complex: diesel for the reactor's emergency generators, sulfur for uranium leaching, helium for fuel rods, needle coke for reactor graphite, transformer oil for the grid, ethane and propylene for chemistry.
Pressure, temperature and composition are calculated honestly, and you learn the state of a plant only through instruments. There are no ready-made "refinery controllers": the mod provides sensors, valves, PLC function blocks and CC: Tweaked peripherals, and you design the control scheme.
oil_seep on the surface ─► shallow well 300–500 m, natural flow
─► batch still (short column) ─► kerosene, diesel for emergency diesels
seismic + well logging ─► deep well with mud and BOP ─► oil field
─► oil treatment, flare / gas utilization ─► pipeline, tank farm
─► atmospheric-vacuum distillation ─► hydrotreating + Claus (sulfur → sulfuric acid)
─► reforming (H₂, aromatics → chemistry) ─► FCC (propylene → chemistry) ─► coking (coke → electrodes, graphite)
gas wells ─► gas processing plant: dehydration, amine, Claus, helium, NGL fractionation (ethane → chemistry)
The era opens with I1 materials: steel and seamless pipe, electricity, industrial gases. Without drill_pipe and casing_pipe you cannot drill deeper than 25 blocks (shallow wells may use welded_pipe casing as an early path).
| Level | What | Model | Domain |
|---|---|---|---|
| Geology | traps as 3D bodies, cap rock, gas-oil and oil-water contacts, stratigraphy |
ReservoirBody + StratigraphicColumn from the world seed |
static (worldgen) |
| Exploration | seismic traces, log curves, core | synthetic from the earth model: impedance, Ricker wavelet, Archie | on request, off-tick |
| Fluid properties | oil, gas, water, solutions | pseudo-components + Peng–Robinson, tables by composition family | FAST (table lookup) |
| Reservoir | pressure, saturations, gas cap, aquifer | sector material balance, Corey, Vogel | 1 Hz, real time |
| Drilling | hook load, torque, rate of penetration, bit wear | mechanical specific energy, IADC wear | ROP — SLOW, mechanics — FAST |
| Well control | kicks, gas migration, wellhead pressures | U-tube model of drill string and annulus, 32 cells each | FAST, ×4 |
| Production | natural flow, gas lift, rod pump, ESP | IPR × VLP nodal analysis, pumpjack kinematics | VLP 1 Hz, wellhead FAST |
| Gathering and transport | pipelines, separators, tanks, compressors | shared thermal-hydraulic network | FAST |
| Processing | columns, reactors, catalysts | continuous units with real flows; lumped kinetics | flows real time, degradation SLOW |
| Accidents | blowout, pool fire, BLEVE, vapour cloud explosion, H₂S, oil spill | CCPS/TNO methods: TNT equivalence, multi-energy, probit | FAST |
Minecraft has only 128 blocks between sea level and bedrock, but real reservoirs are 0.5–4 km deep. Below sea level (geology.datum_y = 63) each block counts as 20 m of true vertical depth (geology.depth_scale_m_per_block). A reservoir at y = −20 under a wellhead at y = 70 lies at 7 + 83 × 20 = 1667 m. The world allows about 2550 m. The scale applies to hydrostatics, string weight, wellbore volumes, seismic travel time and geothermal gradient — not to horizontal distances. One drill_pipe, casing_pipe, tubing_pipe or sucker_rod item = one wellbore block = 20 m.
Minecraft reservoirs are small (a 160×160-block trap with 8 m net pay holds ≈ 2·10⁴ m³ of oil; real fields hold 10⁷–10⁹ m³). So the reservoir and well inflow run in real time, and acceleration applies only to slow degradation.
| Process | Time factor | Note |
|---|---|---|
| Hydraulics, vessel levels, wellhead, compressors | 1 | FAST |
| Reservoir material balance, inflow, water cut | 1 (reservoir.time_scale) |
a field depletes in 30–100 h of play |
| Penetration, bit wear | 72 (drilling.penetration_time_scale) |
deliberate energy imbalance: honest 2 km would take 70 h |
| Tripping | 8 | 2000 m in ≈ 5 min instead of 40 |
| Kick, gas migration, kill | 4 (wellcontrol.time_scale) |
1 = hardcore real time |
| Well logging | 8 | 300 m interval in ≈ 4 min |
| Refinery and gas plant flows | 1 | real time |
| Catalyst deactivation, coking, corrosion, wax, hydrates | 72 | a 6–12 month reforming cycle = 60–120 h of play |
| Lab analysis, core | 72 | 30 physical min = 25 s |
reservoir.pore_volume_multiplier (default 1.0; 2–4 for servers where a field should last a week) is the other scaling point.
- Anticline (dome). Gas fills the crest down to the gas-oil contact, oil down to the oil-water contact, water below. The spill point limits how far down the trap fills.
- Salt dome. A rock-salt cylinder (radius 8–30 blocks) rising through the strata; traps are arcs along the salt wall. Salt gives a strong seismic reflection. The cap rock may hold native sulfur (backlog).
- Stratigraphic trap. A pinch-out or a reef lens. Barely visible on seismic; found by logs and core.
-
Cap rock.
cap_rock_shaleor salt at least one block thick. If worldgen cannot place it (cave, canyon), the trap is "breached": normal pressure, oxidized heavy oil, tar near the surface.
Porosity and permeability vary across the field with noise; a poor-reservoir sector gives a dry hole inside a field.
The world is split into 512×512-block cells, each holding up to 3 bodies.
| Biome group | P(field) | Traps | Fluids | Crest depth, m | Notes |
|---|---|---|---|---|---|
| desert, badlands | 0.45 | anticline 0.5, dome 0.3, reef 0.2 | light 0.4, medium 0.3, gas 0.3 | 900–2300 | P(sour) 0.4 |
| plains, savanna, meadow | 0.35 | anticline 0.6, pinch-out 0.4 | medium 0.5, light 0.3, gas 0.2 | 700–2000 | P(helium) 0.3 |
| taiga, snowy, tundra | 0.35 | anticline 0.7, pinch-out 0.3 | gas 0.6, condensate 0.2, medium 0.2 | 800–2400 | large gas domes |
| swamp, mangrove | 0.30 | pinch-out 0.6, anticline 0.4 | shallow biogenic gas 0.5, heavy 0.5 | 300–1200 | shallow gas: blowout risk while drilling |
| jungle | 0.25 | anticline 0.5, reef 0.5 | medium 0.6, light 0.4 | 1000–2400 | |
| ocean | 0.40 | dome 0.4, anticline 0.6 | light 0.5, gas 0.5 | 1200–2500 | offshore drilling is backlog |
| windswept, peaks | 0.25 | anticline 1.0 | medium 0.7, gas 0.3 | 1500–2500 | steep domes, overpressure |
A typical field (semi-axes 80 blocks, 8 m net pay, 20 % porosity) holds ≈ 9.7·10³ m³ (≈ 8,200 t) of oil in place. Config keys include worldgen.oil.enabled, worldgen.oil.cell_size, worldgen.oil.field_probability_scale and worldgen.oil.place_blocks.
Each field gets a crude_assay (API gravity, sulfur, nitrogen, Conradson carbon, V and Ni, wax, asphaltenes, pour point, 22-point TBP curve, sulfur by fraction):
| Crude type | °API | Density, kg/m³ | S, wt % | Yields < 180 / 180–240 / 240–350 / 350–550 / > 550 °C, wt % | Wax, % |
|---|---|---|---|---|---|
| Condensate | 55 | 759 | 0.05 | 62 / 15 / 15 / 7 / 1 | 1 |
| Light sweet (Brent type) | 38 | 835 | 0.4 | 27 / 13 / 22 / 25 / 13 | 4 |
| Medium sour (Urals type) | 31 | 870 | 1.4 | 18 / 10 / 21 / 27 / 24 | 3 |
| Heavy sour (Maya type) | 21 | 927 | 3.4 | 13 / 8 / 18 / 25 / 36 | 2 |
| Waxy (Mangyshlak type) | 33 | 860 | 0.2 | 15 / 9 / 20 / 30 / 26 | 20–29, solid at +30 °C |
Gas carries a gas_composition component:
| Type | CH₄ | C₂H₆ | CO₂ | H₂S | He | Prototype |
|---|---|---|---|---|---|---|
| Dry | 0.955 | 0.025 | 0.002 | 0 | 0.0001 | Urengoy |
| Rich (associated) | 0.70 | 0.12 | 0.01 | 0 | 0 | associated gas |
| Sour | 0.85 | 0.04 | 0.01 | 0.03 | 0.0006 | Orenburg |
| Highly sour | 0.55 | 0.02 | 0.15 | 0.25 | 0 | Astrakhan |
| Helium-bearing | 0.80 | 0.06 | 0.002 | 0 | 0.003 | Hugoton |
Formation water carries 30–250 g/L salt plus Ba, Sr and ²²⁶Ra — the source of scale and NORM.
Pore pressure follows a normal gradient of ≈ 10.2 kPa/m; inside the reservoir, buoyancy raises crest pressure above normal (the main cause of kicks at the crest). 30 % of cells (60 % in fold belts) have overpressured shales with gradients up to 15–18 kPa/m. Fracture pressure follows Eaton (≈ 15.5 kPa/m in normal conditions). Temperature rises 25–35 K/km.
| Block | Where | Notes |
|---|---|---|
reservoir_sandstone |
reservoir body, fluid=oil|gas|water
|
breaking it above hydrostatic pressure releases fluid |
cap_rock_shale |
seal | impermeable, 25 MPa strength |
rock_salt |
salt domes | NaCl for brine to the chlor-alkali cell |
oil_seep |
above 40 % of oil traps with thin or breached seals | asphalt patch, gives a little heavy oxidized crude_oil
|
barite_ore |
veins y 0…48, ×2 near salt domes | mud weighting agent |
Digging into an overpressured reservoir with a pickaxe releases gas and a crude_oil source until the local pore volume drains. In a sour reservoir this is lethal — which is why reservoirs are opened by wells, not mines. Oil sands, oil shale and shale gas are backlog.
surface signs (oil_seep, gas bubbles in swamps)
└─► 2D seismic ─► time section ─► horizon map
└─► bright spots, anticline crests ─► wildcat location
└─► drilling with mud logging ─► core from the reservoir
└─► logs: gamma, neutron (Am-Be), resistivity ─► porosity, saturation, contacts
└─► volumetric reserves ─► field development plan
No instrument says "oil here, 12 kt". You get raw data and process it yourself — by hand, in the handbook, or with a CC program.
| Block / item | Role |
|---|---|
seismic_charge |
explosive source in a 1–3 block shot hole (2 kg per charge) |
seismic_vibrator |
vibrator on a Create shaft (≥ 64 RPM, 32 SU), 10–80 Hz sweep in 8 s |
geophone |
receiver, wired with signal_cable, up to 48 channels |
seismic_recorder |
peripheral pc_seismic; stores shot headers only |
Traces are synthesized on demand from the static earth model (≈ 30 µs per trace) and returned by pc_seismic.getTrace(shot, ch) as a packed binary string of 1500 int16 samples (2 ms, 3 s). Logging tools include gamma, Am-Be neutron (a sealed_source from Isotopes and RTG) and resistivity; core analysis and mud gas logging complete reserves estimation.
The rig is modelled on a 750 HP land rig and built as a multiblock around the well axis: crown_block, derrick_segment ×9–24, traveling_block with hook and swivel, drawworks (Create shaft), drill_floor and rotary_table, drillers_console, BOP stack (bop_annular, bop_ram ×2–3), bop_accumulator, choke_manifold, kill_manifold, mud_pump ×1–2 (Create shaft), shale_shaker, mud_degasser, mud_tank, mud_mixing_hopper, mud_gas_separator, flare_stack. Hook capacity is set by the weakest link (derrick legs 1.5 MN each, crown block, wire_rope, drawworks). A taller derrick (15–24 blocks) allows stands of 2–3 pipes and faster tripping.
drilling_mud carries mud_properties (density, plastic viscosity, yield point, gel strengths, filtrate, solids, gas, chlorides, pH).
| Component | Role | Source |
|---|---|---|
| water | base | raw_water |
bentonite |
structure, filter cake | fuel-cycle chemistry |
barite_powder |
weighting, 4200 kg/m³ |
barite_ore crushed in Create |
| hematite | weighting, 5000 kg/m³, abrasive | Create / metallurgy |
| NaOH | pH 9–11 against corrosion and H₂S | sodium_hydroxide_solution |
| zinc oxide | H₂S scavenger | zinc dust |
Weighting 50 m³ from 1150 to 1330 kg/m³ takes 13.2 t of barite. Equivalent circulating density adds annular friction: 1200 kg/m³ mud with 2 MPa annular loss at 2000 m gives ECD 1302 kg/m³. Drilled clay raises density and viscosity without solids control; gas cut lowers density at the flowline. Overbalance while the reservoir is open damages it (skin rises over ~24 physical hours) — open the pay quickly with light mud, but never lighter than pore pressure.
At every depth: pore pressure + trip margin ≤ mud hydrostatic ≤ ECD ≤ fracture pressure at the last casing shoe. When the window closes, you run and cement casing.
| String | Size | Depth | Purpose |
|---|---|---|---|
| Conductor | 20″ | 30–60 m | protect the wellhead from washout |
| Surface | 13⅜″ | 300–600 m | isolate fresh water, install BOP |
| Intermediate | 9⅝″ | above overpressure / reservoir | widen the window |
| Production | 7″ or 5½″ | total depth | producing zone |
Cementing in release 1.0 is simplified: annular volume + 20 % of portland_cement, 12 physical hours wait-on-cement (10 real minutes). Uncemented casing does not hold pressure. A leak-off test (pc_drilling.performLot()) returns a volume-pressure curve; you pick the break point yourself.
A kick starts when bottomhole pressure falls below pore pressure in a permeable zone: insufficient mud weight, swabbing while pulling pipe, not filling the hole on trips, or losses higher up. The WellControl model tracks gas pockets in 32 cells of drill string and annulus; gas expands as it rises and migrates at ≈ 300 m/h in static mud.
Kick signs the driller sees: pit gain, return flow above pump flow, well flowing with pumps off, drilling break, falling standpipe pressure, gas on the analyzer, connection gas. The mod does not raise a "kick" event — you configure pit-volume and flow alarms yourself.
Hard shut-in: stop the rotary, space out so no tool joint is in the rams, stop pumps, close the annular or rams. After 5–15 physical minutes, read SIDPP and SICP. If you wait too long, migrating gas raises both and loads the shoe — use the volumetric method.
| BOP element | Seals | Closing time | Failure mode |
|---|---|---|---|
bop_annular |
any pipe, kelly, open hole (partially) | ≤ 30 s | element wear: after 20 closures holding pressure ×0.8 |
bop_ram, ram=pipe
|
only its pipe size | ≤ 30 s | wrong size: RAM_MISMATCH
|
bop_ram, ram=blind
|
empty hole | ≤ 30 s | will not close on pipe |
bop_ram, ram=shear
|
cuts the pipe body and seals | ≤ 30 s | cannot cut a tool joint: TOOL_JOINT_IN_RAM
|
The bop_accumulator (nitrogen-precharged bottles: 7 MPa precharge, 8.3 MPa minimum, 21 MPa max — one 41.6 L bottle gives 20.8 L usable) must close all preventers without pumps per API 53. Control by physical levers or pc_drilling.closeBop. An untested BOP (interval drilling.bop_test_interval_days = 14) has a 5 % element failure chance per closure.
Killing the well. You build the kill sheet from pc_drilling.getKillSheetData(): kill mud weight, initial and final circulating pressure. Example: 2000 m, 1150 kg/m³ mud, SIDPP 3.5 MPa, slow-circulation pressure 2.5 MPa → kill mud 1328 kg/m³, ICP 6.0 MPa, FCP 2.89 MPa. Choose the Driller's method (two circulations) or Wait and Weight (one circulation, lower shoe load). The choke is operated by hand on the choke_manifold, via pc_drilling.setChoke, or by a PID block. Too open → a second influx; too closed → losses at the shoe or an underground blowout to surface around the casing.
| Stage | What happens | Player action |
|---|---|---|
| 1. Release | mud, then reservoir fluid; H₂S cloud if sour | evacuate, cut power to ignition sources |
| 2. Ignition | per-tick probability; sparks on the rig | — |
| 3. Burning blowout | 100–500 MW jet fire; derrick collapses in 1–5 min | clear the wellhead with Create cranes and deployers, cool with water |
| 4. Extinguishing | a snuffing_charge at the base of the flame blows it out (Red Adair method) if the charge is large enough and wellhead metal is below 600 K |
fire monitors, place the charge by crane |
| 5. Re-ignition | P = 0.3 per 10 s while metal is above 600 K | keep cooling |
| 6. Capping |
capping_stack placed open on an intact flange, then closed |
kill through the stack |
| 7. Relief well | backlog | — |
A gas well at 20 MPa can blow out 0.5–2 million Nm³/day. Blowouts go into the station log and the emissions ledger. Differential sticking, cuttings packoff and lost circulation are also modelled; vanilla items tagged c:loss_circulation_material reduce losses. Directional drilling, full cementing quality, perforation and fracturing are backlog.
After drilling, tubing_pipe is run inside the production casing, and the well gets a wellhead and christmas_tree (master valve, swab valve, wing valve, adjustable choke). The choke is the main rate control while flow through it is critical (Gilbert correlation); sand erodes it over time and the rate drifts.
Each second, every well builds its vertical lift curve (drift-flux multiphase model, 16 depth segments, flash at each point) and intersects it with the reservoir inflow curve — nodal analysis. The result is linearized for the fast network, so closing a valve or raising separator pressure changes the rate immediately. No intersection → the well is DEAD.
| Lift method | How it works |
|---|---|
| Natural flow | while reservoir pressure exceeds wellhead + column + friction; high-GOR oil flows longer; slugging before it dies |
| Gas lift | gas injected down the annulus through gas_lift_valves (opening pressure set when installed); optimum injection rate; heading damped by your PID |
| Pumpjack and rod pump | Create shaft → pumpjack_gearbox → beam → sucker_rod string → downhole_rod_pump. 44 mm plunger, 2.5 m stroke, 8 spm → 35.8 m³/day; 70 mm, 3 m, 10 spm → 133 m³/day. Rod loads, counterbalance and gearbox torque per API RP 11L |
| ESP | backlog |
Well states: COMPLETED, FLOWING, DEAD, GAS_LIFT, ROD_PUMP, ESP, SHUT_IN, KILLED, BLOWOUT, ABANDONED.
| Problem | Physics | Remedy |
|---|---|---|
| Wax | deposits below wax appearance temperature (30–50 °C) | rod scrapers, pipeline pigs, hot oiling, insulation |
| Hydrates | gas + water at high pressure, low temperature form solids; plugs at 95 % |
methanol / MEG (20 % methanol lowers hydrate point by 18.2 K), heating, gas dehydration. A plug heated from both ends can launch as a projectile |
| Sand | weak formations fail above critical drawdown | limit drawdown, slotted_liner, washing |
| Scale | BaSO₄ from incompatible waters, CaCO₃ from pressure drop | scale inhibitors, injection water selection |
| NORM | scale co-precipitates ²²⁶Ra; contaminated tubing and separators | dosimetry during workovers; pulled tubing is radioactive waste |
| CO₂ corrosion | de Waard–Milliams | inhibitors, corrosion-resistant steel_grade
|
| H₂S cracking | hard steels crack in sour service (NACE MR0175) | pipe with pipe_spec.sourService
|
Pressure maintenance by water injection uses injection_water from water treatment.
wells → test manifold → 3-phase separator stage 1 (0.6–1.5 MPa)
gas → compressor → gas lift / gas plant / fuel; excess → flare
water → produced water treatment → injection wells
oil → separator stage 2 (0.1–0.3 MPa) → heater → electrostatic desalter → stabilizer → stock tank → pipeline to refinery
-
three_phase_separator: gas, oil and water zones, levels held by your two control valves. Overfilling sends liquid into the gas line (compressor damage, "burning rain" from the flare) — safety tripSEP_HIGH_HIGH_LEVEL. -
electrostatic_desalter: 1–3 kV/cm field, 50–200 kW from the grid, wash water 4–8 %. Two stages bring 200 mg/L salt to 0.3 mg/L. Export spec: water ≤ 0.5 %, salt ≤ 100 mg/L; refinery feed ≤ 3–5 mg/L. Salt reaching the crude unit hydrolyzes to HCl and corrodes the overhead within 20–50 h. - Stabilizer (
fractionating_column, 10–15 trays) removes C1–C4 to vapour pressure ≤ 66.7 kPa; overheadnglgoes to fractionation.
Stage-1 separator gas (associated_gas) is 50–250 m³ per m³ of oil.
| Route | Needs | Result |
|---|---|---|
Flare (flare_stack + flare_tip) |
flare_knockout_drum, pilot burners |
98 % combustion efficiency; 2 % methane + CO₂ + SO₂ to the emissions ledger; quota penalties |
| Field fuel | compressor, dehydration | heaters, gas-turbine power station |
| Gas lift | compressor to 8–12 MPa | — |
| Reinjection | compressor above reservoir pressure | gas cap pressure maintenance |
| Gas processing plant | pipeline | sales gas, NGL, sulfur, helium |
Without a pilot flame, released gas goes unburnt (methane and H₂S cloud). Flare height must keep radiation at the base below 6.3 kW/m² (API 521). The flare glow is visible at night from afar.
-
Pipelines are ordinary
pipe/pipe_largewith apipe_speccomponent; long lines collapse into 30 m links (1000 blocks ≈ 35 links). Gas lines hold line pack. Design pressure by Barlow with a location factor (0.72 down to 0.4 near housing); gradesSt20245 MPa, X52 359 MPa, X70 483 MPa. Overpressure on a corroded line causes a rupture: a gas cloud or jet fire, or an oil spill. Leak detection (mass balance, pressure wave) is your job withpc_pipeline. -
Pigging:
pig_launcherandpig_receiverbound a pipeline section. Apigremoves wax (out as low-gradeparaffin_wax); asmart_pigdetects metal loss > 10 % of wall with 0.9 probability (pc_pipeline.getIliReport(id)). Pigs get stuck on > 20 % deposits, tight bends or reduced-bore valves. Opening a trap door under pressure is blocked mechanically and by LOTO. -
Cathodic protection: buried steel corrodes 0.1–0.3 mm/yr; at −0.85 V vs Cu/CuSO₄ corrosion drops ×50.
sacrificial_anode(magnesium) orcp_rectifierwith ground bed;cp_test_postfor on/off potential. Below −1.2 V the coating disbonds. -
Tanks: multiblock
tank_shell,tank_roofortank_floating_roof,tank_gauge(pc_tank). Breathing and working losses go to the emissions ledger (floating roof cuts them 90–98 %). Hazards: overfill (TANK_HIGH_HIGH_LEVEL), boilover of a burning tank over water bottoms (drain the water), floating roof tilt, vacuum collapse.gas_storage_bulletholds LPG under pressure — BLEVE risk in a fire. -
Compressors:
centrifugal_compressorandreciprocating_compressor. Example: 10 kg/s gas from 3 to 7.5 MPa = 1.75 MW. Surge on the left of the surge line (pressure pulsation, ×10 bearing wear, eventually blade failure); you tune the anti-surge recycle controller. Drive: Create shaft (up to 1 MW), electric motor, or a gas turbine with free power turbine burning pipeline gas. -
Odorization:
odorizeradds 16 g ofodorantper 1000 m³. Odorized gas gives a "Smell of gas" subtitle, mild nausea and a sound cue; unodorized gas does not smell at all. H₂S smells by itself, but above 100 ppm the sense of smell is paralyzed — exactly when it becomes lethal. - Underground gas storage, LNG and rail tankers on Create trains are backlog.
The reference refinery processes 20–30 L/s of crude (1.5–2.2 kt/day). At these flows real equipment sizes match blocks — an atmospheric column 3 m × 30 m is a 3×3×32 column — so continuous units run in real time. Only catalyst aging, coking and corrosion are accelerated. Units are process units with peripherals pc_column and pc_chem_process.
crude → desalter → atmospheric column
gas / overhead → gas fractionation / fuel gas
naphtha → naphtha hydrotreater → catalytic reformer → reformate → gasoline blending
→ H₂ → hydrogen network → hydrotreaters
kerosene → kerosene hydrotreater → kerosene / diluent_dodecane
diesel → diesel hydrotreater → diesel_fuel
residue → vacuum column
vacuum gas oil → FCC → gasoline, propylene (→ polymers), light cycle oil, decant_oil (→ coker)
lube cuts → lube oils
vacuum residue → delayed coker → petroleum_coke / needle_coke
hydrotreater H₂S → amine treating → Claus → sulfur
The eight reference units: atmospheric distillation, vacuum distillation, hydrotreating (naphtha/diesel modes), reforming, FCC, Claus with amine regeneration, delayed coking, blending with a quality lab.
| Unit | Purpose | Key facts |
|---|---|---|
| Crude heater | heat to 350–370 °C | fired process_heater, ≈ 12.3 MW absorbed for 25 kg/s; above that, coking in tubes |
| Distillation columns |
fractionating_column segments |
tray-by-tray model |
| Catalytic reforming | naphtha (RON 50–65) → reformate (RON 95–100) + hydrogen + aromatics |
catalyst_reforming Pt-Re/Al₂O₃ (platinum from copper anode slimes); 3–4 fixed_bed_reactors with interheaters |
| FCC | vacuum gas oil → gasoline (RON 91–93), propylene, light cycle oil, decant_oil
|
fcc_riser ×8–16, 500–540 °C, 2–4 s |
| Hydrotreating | remove S, N, olefins from naphtha, kerosene, diesel | CoMo catalyst; kerosene becomes diluent_dodecane for PUREX |
| Claus | H₂S → liquid sulfur → sulfur granules |
claus_reaction_furnace, sulfur_condenser, 2–3 catalytic stages, sulfur_pit, sulfur_granulator; 97.4 % recovery with 3 stages; keep H₂S:SO₂ = 2:1 (10 % air error costs 3 %); 1000 kg/h H₂S → 903 kg/h sulfur |
| Delayed coking | vacuum residue → coke, gas, naphtha, gas oil |
coke_drum (3×N×3); at CCR 20: 32 % coke. Drum cycle: fill → switch → steam → water quench → drain → unhead → hydraulic cutting (cutting_stem, 25–30 MPa) |
| Lube oils | vacuum cuts → base oil | phenol extraction (phenol from the coke plant), dewaxing with propane chiller, hydrofinishing → lube_oil + paraffin_wax
|
| Transformer oil | 300–400 °C cut of low-sulfur crude | S < 50 ppm, dewaxed to −45 °C, breakdown ≥ 30 kV, water ≤ 30 ppm |
| Bitumen | vacuum residue of heavy crude | air-blown grades are backlog |
| HF alkylation | backlog | alkylate unlocks premium gasoline |
Coke grades. petroleum_coke (sponge, sulfur ≈ 1.5 × feed sulfur) → fuel, or after calcining → anodes, electrodes, graphite if S < 1 %. needle_coke requires aromatic, low-sulfur, low-asphaltene feed (decant_oil or coke-oven coal_tar_pitch) → graphite electrodes for the arc furnace and reactor graphite in the Acheson furnace. Shot coke from high-asphaltene feed is fuel only. Calcining is done in the rotary_calciner at 1250–1350 °C. Opening an under-cooled drum ejects steam and hot coke — permissive COKER_UNHEAD_PERMISSIVE.
Catalysts carry a catalyst_state component (activity, cokeFrac, poisons, sinterLoss, ageH, state FRESH/OXIDE/ACTIVE/SPENT/REGENERATING). Types: catalyst_reforming, catalyst_fcc (zeolite Y), catalyst_hydrotreating (CoMo, can use by-product Co/Mo from metallurgy), catalyst_claus.
Fuel quality. Products carry a fuel_quality component: RON/MON, cetane, sulfur, density, distillation points, RVP, flash/cloud/pour points, benzene/aromatics/olefins, vanadium/sodium, water. Fields are hidden until a lab certifies them. Consequences: knock and piston damage on low octane; hard starts and smoke on low cetane (below 38, start failure 0.3); diesel cloud point above air temperature plugs filters (winter diesel is mandatory in snowy biomes); sulfur → SO₂; vanadium and sodium → gas turbine blade corrosion.
quality_lab runs CFR octane, cetane, D86 distillation, XRF sulfur, density and flash tests on a sample_bottle taken from any pipe or tank (20–60 physical minutes, ASTM reproducibility). Online analyzers (pc_analyzer) do it continuously, with drift. Gasoline blending is a linear-programming problem for you to solve.
raw / associated gas → inlet separator → amine treating
acid gas H₂S + CO₂ → Claus → sulfur
→ TEG dehydration → cold box: turboexpander, demethanizer
NGL → fractionation: deethanizer, depropanizer, debutanizer → ethane, propane, butane, C5+ naphtha
methane + N₂ + He → nitrogen/helium unit → helium
→ sales_gas → odorization → pipeline
- Sulfur. Highly sour gas (Astrakhan type, 25 % H₂S) turns the plant into a sulfur factory: 1 million Nm³/day → ≈ 340 t/day of sulfur. This is the main link "gas plant sulfur → sulfuric acid → uranium leaching".
-
Helium. At 0.05–0.5 % He, the gas is cleaned (CO₂ < 50 ppm, water < 0.1 ppm), chilled in the
cold_boxto −150…−185 °C, and the crude helium (50–70 %) is purified to 99.995 % in ahelium_purifierusingliquid_nitrogenfrom the air separation unit. Recovery 85–95 %. 500,000 Nm³/day at 0.3 % He gives ≈ 241 kg/day. Helium fills fuel rods, serves cryogenics and the core porosimeter. Carbon steel below −29 °C is a safety trip (CRYO_LOW_TEMP_CARBON_STEEL). -
Turboexpander (
turboexpander): 6 → 2.5 MPa, −30 → −85 °C; 10 kg/s yields ≈ 480 kW delivered to a Create shaft (480 SU) or a booster compressor. -
NGL fractionation →
ethane(steam cracker feed),propane,butane,naphtha.lpgis stored ingas_storage_bulletand odorized; propane also chills lube dewaxing.
Oil and gas accidents use the same consequence pipeline as the nuclear island: initiating event (rupture, blowout, overfill, surge, safety system failure) → release → cloud or pool → ignition? → pool fire, jet fire, fireball (BLEVE), vapour cloud explosion, toxic H₂S cloud or oil spill → DamageBudget, plume dispersion and the emissions ledger. See Accidents and Environment and Economy.
| Tag | Where |
|---|---|
FLAMMABLE |
crude, products, condensate, oil-based mud |
EXPLOSIVE_MIX |
all gases and LPG, light vapours, reformer hydrogen |
CHEMICAL_TOXIC |
H₂S, acid gas, mercaptans, phenol, HF |
ASPHYXIANT |
purge nitrogen, CO₂ from amine regeneration, helium |
CRYOGENIC |
helium cold box, LNG, turboexpander |
RADIOLOGICAL_EXTERNAL |
Am-Be logging tool, pipe radiography |
RADIOLOGICAL_INTERNAL |
NORM scale with ²²⁶Ra in tubing and separators |
| Output | Goes to |
|---|---|
sulfur, molten_sulfur
|
sulfuric acid for uranium leaching; rubber vulcanization |
helium |
fuel rod fill gas, cryogenics |
hydrogen_sulfide |
heavy water GS exchange towers |
diluent_dodecane |
PUREX solvent diluent |
diesel_fuel |
emergency diesel generators of the reactor |
fuel_oil, refinery_fuel_gas, sales_gas
|
boilers, gas turbines, furnaces, methane reforming |
ethane, propane, butane, naphtha, propylene
|
steam cracker, polymers (Petrochemistry) |
benzene, toluene, xylenes, hydrogen
|
chemistry, ammonia, hydrogenation |
petroleum_coke, needle_coke
|
electrodes, reactor graphite (Acheson furnace) |
lube_oil, transformer_oil
|
machine lubrication, grid transformers |
bitumen, paraffin_wax
|
asphalt, waste bituminization, candles and decor |
rock_salt |
chlor-alkali brine |
| NORM waste | radioactive waste handling |
Inputs: steel, pipe, OCTG and wire rope, Pt/Al/Cu (Coal and Metallurgy); electricity, process heaters, gas turbines (Energy Grid); treated water and nitrogen; cement and bentonite; phenol; chlorine, NaOH, methanol, hydrogen (Petrochemistry); Am-Be sealed sources; PLCs, safety logic solvers and analyzers (Automation Platform).
pc_well, pc_drilling (including performLot, closeBop, setChoke, getKillSheetData, recordSlowCirculationRate), pc_seismic, pc_column, pc_compressor (event pc_compressor_surge), pc_tank, pc_pipeline. See CC: Tweaked API.
- Petrochemistry — what happens to ethane, propylene and aromatics
- Energy Grid — gas turbines, diesels, fuel quality effects
- Coal and Metallurgy — pipe, OCTG, catalysts metals
- Nuclear Fuel Cycle — sulfuric acid, helium, dodecane
- Operations and Safety — flares, fire fighting, LOTO
- Environment and Economy — oil spills, flaring quotas
- Accidents
Prompt Critical · © 2026 denfry · Repository · Report an issue
Start here
Design
Nuclear
Industries
Control and automation
World and server
Development