Fixing the Geothermal Power Plant
In my last post, I built my new power source using a massive pool of magma as a source of heat to boil water. That was working great for quite a while, producing tons of power the moment I needed it. But I ran into a problem.
The Problem



Sorry for bad quality; had to pull this from ONI's automatic full-colony screenshotting.
Eventually, the magma cools enough to turn it into blocks of igneous rock. See that magma receding from the side of the steam boiler? The rock is still hot, and it still transfers temperature, but it doesn't do so as effectively as magma does. So, it doesn't inject heat into the steam room as well. As the magma farther and farther away from the diamond conduction tiles cools as well, the resistance in heat conduction through all the igneous rock increases. So, the heat available decreases at the same time as the thermal conductivity. I noticed that the boiler room was struggling to stay at 200° C all the time.
Considering how much of the magma had already solidified, I took the opportunity to dig in without disrupting the unintentional dam of magma and add a robo-miner to dig up the igneous rock as soon as it solidified. That way, fresh magma would always be able to flow in and touch those diamond tiles. I used some basic automation to guarantee that the robo-miner wouldn't touch the magma. A thermo sensor beside the diamond tiles that only unlocks the door if it's frozen magma (frozen magma being 1400° C igneous rock, by the way). The robo-miner can't see anything if the door is locked, so it can only mine if there is no magma in front of it. If the door is closed, then the miner isn't doing anything, and the magma can't melt the steel door, so it can't melt the robo-miner.
Pretty clever solution right?
Nope. Wrong.

Here's what I think is happening. When the magma flows from the big pool to fill in the gap left behind from dug-up igneous rock, it doesn't fill the entire tile instantly. It flows, so for just one frame's worth of time, there's only a bit of magma - around 100kg. Well, this touches the already cool igneous rock, which sucks the heat out of the bit of magma, so that magma solidifies. Which leaves me with a bit of hot igneous rock debris, and an empty space again! Fast forward around 10ms - the game does it's physics update again, drips 100kg of magma onto igneous rock, which sucks up the heat and solidifies the drip into debris. Rinse and repeat.
ONI allows debris to stack infinitely in the same tile of space. So, as long as it is in debris form, that one tile can contain hundreds or thousands of tons of material. I've let the game run for about 10 seconds since the last picture, at 3x speed, and this has already accumulated.

On the one hand, I figured out how to store a literal ocean of magma. Just let it all solidify into pieces and store in one tile of space. Easy. On the other hand, I would no longer have an ocean of magma to pull heat out of. So, my colony dies. Hmm.
A Stopgap Solution
After some tinkering with the mechanics, I discovered why the above situation was really happening. I have a diamond tempshift plate on the magma side of the heat injector. That's why I get the debris generating issue. That diamond tempshift plate pulls the heat out of falling/flowing magma so fast that it solidifies before landing on the ground.
So I removed the tempshift plate. The magma is hot enough by itself, right? It doesn't need the assistance of the tempshift plate to heat up the diamond. Well, yes that is correct, but the fundamental problem is still happening.

The magma will solidify, which will cause the robo-miner to mine it. As far as temperature transfer goes, all the remaining heat in the now-igneous-rock is gone. Inaccessible. Reduced to atoms. It falls as debris (debris in general has horrible thermal conductivity in ONI) on to some neutronium (which has literally zero thermal conductivity), aaaand that's that. I can't get the heat out of it from that point. Notice how there's debris all along the bottom of the screenshots here - none of it has melted, despite sitting submerged indefinitely in a liquid that is literally its own molten state of matter.
The liquid magma is only around 1420° C. So, it only gives me a bit of its heat before it freezes, is dug up, and the remaining heat is trapped forever in the debris. I'm not taking advantage of A LOT of the heat in here, and although this is better and more effective at keeping the steam boiler at 200° C, I'll still run out of magma pretty fast - maybe not in under 2 cycles but probably under 100 cycles. Then I'm out of heat, and therefore, out of power. Not good.
A More Permanent Solution
There are basically two ways to extract heat from, or inject heat into, debris (any heat transfer really) in ONI:
- Place the debris on a metal/diamond tile (maximize thermal conductivity between debris and floor) and put a metal/diamond tempshift plate behind the debris (maximize thermal conductivity between the floor tile and the liquid/gas that the debris is submerged in).
- Ship the debris on conveyor rails. This separates the debris into small enough chunks that even a little bit of thermal transfer is sufficiently effective, and it keeps those chunks moving. This principle is exactly how volcano tamers work.
I cannot really choose #1 here. At least, not inside the magma pool. If you're confused why, you might want to reread the "The Problem" section of this post. It might work if I do that inside the boiler though.
That said, I'm going to go with option #2. Since this debris is coming from the magma side (it obviously has to - it can't come from anywhere else) I'm going to need to ship it through walls of the boiler to get it on inside. And if they already need to be shipped on conveyor rails just to get inside the boiler... well might as well just keep that going and use strategy #2. After all, this whole project is technically a volcano tamer anyway... just with several extra steps.

In place of where I currently put in a robo-miner, I now need a robo-miner, auto-sweeper, and a conveyor loader. The robo-miner digs up any solidified magma, the auto-sweeper picks it up, and the conveyor loader puts it on the rails. This all takes place in a vacuum, since otherwise the diamond touching the magma would heat up the air and in turn, heat up the buildings to the point of overheating, if not melting. The buildings produce heat themselves though, and in a vacuum, there's nowhere for that to go. To prevent overheating, I hooked into the boiler's preexisting cooling line and used conduction panels to cool these three buildings.

The conveyor rails then ship the 1400° C igneous rock into the boiler. Since I have two lines of steam turbines, I decided the simplest option is to snake the conveyor rail line so it occupies every single space below the turbines. They are the ones that eat the hot steam, after all. Each package on the rail is a 20kg chunk and in order to escape the boiler, it needs to travel about 70 tiles along the rail. It sits on a metal rail, in 200° C steam, and passes over multiple diamond, and many more aluminum, tempshift plates. So, it manages to drop off about 1100° C of temperature without an issue. By the end, it usually still in the high 200s, which means if I can cut the line there, the rock will sit in the steam longer, dropping off more of its heat. Once it reaches 200° C, it won't be able to contribute more heat; the steam is hotter, so I let the rock continue forward. I can make this happen automatically with a thermo sensor hooked up to a conveyor shutoff at the end of the rail line. When the rock on the rail is hot, the shutoff prevents passage; when it's cool enough, it lets rock flow by.
There's one more optimization to do here though. If I just blindly push all the igneous rock into the boiler room and make sure all the heat is drained from it every time, there's a good chance the steam will climb over 200° C. The turbines will gobble up the steam regardless of temperature, but it won't give me additional power. That's just how the game works. 200° C and 500° C steam both produce the same amount of power. Given this, letting the room stay higher than 200° C is just letting the game consume lots of valuable excess heat for no benefit. So I actually don't want the igneous rocks to go through if the room is already at 200° C.
That's why I added a conveyor shutoff at the beginning of the rail line as well. This one listens to the same thermo sensor that I've had a for a while now, the one that controls the heat coming through the diamond tiles directly from the magma. If it says I need more heat (the steam room is under 200° C), then it lets some rocks through the line and accepts some heat directly from the magma. But as soon as it crosses 200° C, the sensor turns off, meaning no additional hot rocks or magma heat will come through. I think this is the best way I can engineer it to use the heat as efficiently as possible.

The magma pool still depletes pretty fast, but I think that's inevitable when I'm digging it up so much. Regardless, I'm getting all the heat out of it via the debris; it piles up a lot, but there's no way for its heat to dissipate... so it just sits there until it gets picked up one day. If I really wanted to, I could send the debris coming out of this steam boiler into separate boiler room to extract heat down to 125° C. At that point, I've really done all that I can to still be meaningfully power-positive. Cooling it further would require input power or something consistently cold that required consistent heating. I don't have anything reliably cold that needs warming up that I can use as a temperature exchanger with the 125° C rocks... the rocks can just sit on the ground I guess. Forever, probably.
At some point, I might do something to the way the minor volcanoes dump magma into the pool. If the pool doesn't really last that long, then there might be a better way to get the new magma over to the side of steam boiler... I could reclaim a bunch of space, which is conveniently already a vacuumed out area as well. I have no reason to do that for now though. I've been running this boiler for around a dozen or so cycles at the time of writing, and it's been going strong so far; no hitches, no hints of long-term instability.
We'll see if it continues to survive the test of time.