# Nuclear Fission Reactor Design ## Inspiration - Minecraft IC2 Reactor - Rimatomics reactor ## Random notes - plasma as an exciting medium, as in neutron multiplier when used in the cooling loop - alternatively, plasma as a neutron accelerator - that'd be weird and neat - ice "fuel" rod that eats neutrons, cools the reactor down, then melts - enable through matsci properties rather than doing directly ## Basic Principles - Slots for fuel rod/control rod/heat exchangers/cooling channels - matsci properties for each - Fuel rods emit neutrons at a rate determined by matsci properties - Fuel rods hit by a neutron heat up and release more neutrons - heat exchangers equalise temperature with surrounding components - cooling channels exchange heat with the gas being pumped through - control rods asborb neutrons based on matsci + how much they're inserted - Material morphing over time? Look into alloys, probably some good code to poke at there - Gas cooling loop into a turbine to generate power - material refinement (ie, centrifuge)? - console for coolant flow, control rods - neutron reflector components (some fucker is gonna make a fission bomb) ## Style ![](https://i.imgur.com/kVkeG6t.png) ![](https://i.imgur.com/R9z4PNz.png) ## Actual Coding Considerations - TGUI for component placement in the reactor - Base icon + overlays for each component slot - Look at TEG code for hooking onto pipe grids and doing heat exchange - Find a good algo for grid interactions, for the actual fission simulation - Look at the TEG burn computer for graphs + stuff, we're gonna need an info dump screen for the turbo nerds - pre-calculated ray tracing for neutrons? ### Turbine - Energy determined by speed/load - Load is configurable by user - Speed is proportional to pressure of the medium - delta-T of the medium should be proportional to energy - max turbine speed - failure mode? maybe spun too fast for too long? Turbine failure = no cooling = overheat reactor = boom - Pipes will have upper limit on pressure as well, don't forget ### Reactor Class #### Component grid - matrix of /obj/item/reactor/component #### Process() - move gas in/out of gas components - simulate component grid neutrons - simulate component grid heat - handle alerts (oh god shit's on fire PDA messages for everyone) ### Reactor/Component #### processGas(inGas) return inGas //most components won't touch gas #### processNeutrons(inNeutrons) return outNeutrons #### processHeat(touchingComponents = []) do heat exchange here? or in sim code? return newheat? ### Reactor/Component/GasChannel #### processGas(inGas) outgas = src.currentgas src.currentgas = ingas heat exchange with self and current gas return outgas ### Reactor/Component/FuelRod basically will act like any other mat based component, but with more mass?