Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

Zarquan

Massive heat deletion/creation bug from liquid boiling -- Part 2: 20 kW from one aquatuner.

Recommended Posts

Zarquan    988

After a discussion with @mathmanican and @wachunga, I felt like this bug needs another post.  I feel like it is probably the largest heat bug in the game and should be fixed as soon as possible, especially since it appears to me (unconfirmed) that the mass is in the wrong side of fraction.  Unfortunately, I just didn't have the time back then to do this bug justice

The original posts:

Spoiler

 

I present:  A single lazy aquatuner powering over 20,000 watts through steam turbines.  (lazy meaning running less than 50% of the time).

image.thumb.png.d5f17913c43949b5fca7055e35283b24.png

This has been running for many cycles without reducing the power produced.  Many people may be thinking "But where is all this heat coming from?  Well... It all comes from one packet of chlorine using the 5 kg boiling/flaking mechanic to boil supercoolant.

image.thumb.png.c766701900194ede26efc0491f52fa45.png

The way this works is that the aquatuner (submerged in about 10 kg/tile molten lead), heats the quite exact 2547824.9 grams of chlorine compressed in to that one airflow tile.  This is where the bug takes place, as the input supercoolant is at 150 C, the chlorine manages to boil it to ~435 C in 5 kg increments many times per second without losing significant heat. 

image.thumb.png.a22a66ab635ae48db4df0640f57c980b.png

After the supercoolant boils, it is whisked away by an basic bead pump (using naphtha and petroleum as the liquids).  It then passes an airflow tile and comes in contact with heat sink 1.  This heatsink is designed to pull as much heat as possible and bring it to the steam turbines.  The doors around the supercoolant core are used to prevent pressure damage.

When the supercoolant is cool enough (~200 C), the door in the middle opens and the supercoolant falls down an escher waterfall to heat sink 2.  This heat sink is designed to cool the supercoolant as precisely as I can to 150 C.  Once it is at 150 C, the door on the right opens and feeds the supercoolant back in to the boiler via a series of escher waterfalls.  I set it up so that the right door stays open for 11 seconds and, 10 seconds after the right door opens, the middle door also opens for 6 seconds.  This ensures that both sets of heat sinks are being used at all times.

When I started this build, my plan was to make the boiling or the aquatuner the limiting factor.  However, I simply can't get the heat away from the boiling supercoolant fast enough.  I believe that this could be multiple times more powerful, but I am not sure how to accomplish it at this time.

There are 34 steam turbines attached to heat sink 1 and 9 steam turbines attached to heat sink 2.

Attached is the save with this build so people can tinker with it.  My next project is to do something similar with phosphorus without space materials.

Attempt 1.sav

EDIT:  Note that for this build, almost everything is space material.  And this was built in debug to showcase the bug.

 

Share this post


Link to post
Share on other sites
mathmanican    3256

For future referencing, here's a link to a possible formula (by @wachunga) that let's you play with this with any two sets of materials, as well as predict the minimal mass needed in the donor cell (just solve for DonorMass if New Temp = Old Temp) to make sure flaking happens. 

 

Share this post


Link to post
Share on other sites
Zarquan    988
Quote

I think I got it.

I didn't explore the hard cutoff, just how much heat is lost from the donor cell to the flash boiled material. Or to rearrange things a bit, what the final temperature of a donor cell will be after it flash boils something.

When something is flash boiled, 5kg of it instantly jumps to 3C above it's boiling point (402.9C for petroleum). This is a bit different from regular boiling where the material loses 1.5C after it phase changes (410C crude changes to 408.5C petroleum).

 

Terminology:

FlashedSHC = Specific Heat Capacity of the material being flash boiled.

FlashedDelta = Difference in temperature between the flashed material's initial state and the post boiling state (including the extra 3C).

DonorSHC = Specific Heat Capacity of the cell that is causing the flash boiling.

DonorMass = Mass of that cell in kg.

DonorOldTemp = Temperature of that cell before it flash boils something.

 

Heat Lost From Donor Cell (kJ) = (10 * DonorSHC * DonorMass) - (5 * FlashedSHC * FlashedDelta)

Donor Cell's New Temperature = DonorOldTemp + ((5 * FlashedSHC * FlashedDelta) / (DonorSHC * DonorMass)) - 10

 

Note I only tested Insulation as the Donor and Crude as the Flashed. I suspect this is accurate for all materials, but I didn't check.

I have no idea how the math is actually implemented in the code. This is just an equation that accurately predicts what happens as far as my testing goes.

Please advise if your testing finds a case where this is not true.

From the thread linked.  Credit to @wachunga.

(merged)

The thing is, if this boiling/flaking mechanic should be in the game at all, I think it should follow the math below: 

Donor New Temp = Doner Old Temp - (5000 * FlashedSHC (liquid) * FlashedDelta) / (DonorSHC * DonorMass (in grams))

It is much simpler and shouldn't add or destroy any significant heat.

This is because the heat energy added to the liquid is (5000 * FlashedSHC (liquid) * FlashedDelta), so that should be what is removed from the donor.  Dimensional analysis says that to do this, we divide by DonorSHC and DonorMass to get change in temperature.

This would, unfortunately, mean that water on 1000 C abyssalite would become significantly more dangerous to a base, but I think I would prefer that.  Or hard code that abyssalite can't cause boiling in this way.

Share this post


Link to post
Share on other sites
wachunga    374

Thank you for quoting the text so I didn't have to!

I agree with the new math. However the game implements it, that's what it should simplify to.

That being said, I question whether this mechanic should be in the game at all. I believe the idea is to simulate a gradual melting instead of an entire cell melting at once. Which is a nice idea. The problem is thermal conductivity doesn't play a factor at all as far as I can tell. The classic example being abyssalite in the magma biome cooking crude into petroleum or sour gas. So even if the heat math was fixed, the mechanic is still problematic. Ideally the mechanic should involve conductivity somehow. I question if redesigning mechanics is a reality at this stage in the game's life.

 

Share this post


Link to post
Share on other sites
Zarquan    988
Just now, wachunga said:

Thank you for quoting the text so I didn't have to!

I agree with the new math. However the game implements it, that's what it should simplify to.

That being said, I question whether this mechanic should be in the game at all. I believe the idea is to simulate a gradual melting instead of an entire cell melting at once. Which is a nice idea. The problem is thermal conductivity doesn't play a factor at all as far as I can tell. The classic example being abyssalite in the magma biome cooking crude into petroleum or sour gas. So even if the heat math was fixed, the mechanic is still problematic. Ideally the mechanic should involve conductivity somehow. I question if redesigning mechanics is a reality at this stage in the game's life.

 

My thinking is that all they have to do is blacklist Abyssalite (and probably Insulation) from this interaction, and everything should be good.  Or make thermal conductivity a factor in the hard cutoff.  I think it would be a fine mechanic in the game if the math is executed correctly. 

Share this post


Link to post
Share on other sites
mathmanican    3256

FYI, all the things we discovered today completely predict what I saw in @Tonyroid post about steam turbine's deleting heat. In that post I noticed 

On 11/3/2019 at 1:27 AM, mathmanican said:

I started with 10000kg of steam at 700K.  I'm pumping in 1kg/s liquid on the right. Notice how 5kg of newly created steam caused 10000kg to drop over 10K. A few moments later, another 5kg of steam caused the temp drop to 679K.

Basically, flaking will cause a drop in temp around 10K, if you have a large mass donor. Crazy.  

Share this post


Link to post
Share on other sites
Zarquan    988

@wachunga, do you think you could try your experiment on Chlorine's interaction with Supercoolant?  I feel that is one of the widest differences we can encounter.  Or, better yet, could you upload a copy of your experimental setup?

Share this post


Link to post
Share on other sites
mathmanican    3256
18 minutes ago, Zarquan said:

experiment on Chlorine's interaction with Supercoolant?

Done.  2600kg of 720K chlorine, above 800kg of 450K supercoolant.  Here is the prediction. 

image.png.79f32f9b89ea5673daceb5a3ae06a8de.png

And here is the actual. 

image.png.c4eb7bd8950ba589fc17e7257c50b6ed.png

I would call that nigh perfect precision. 

Share this post


Link to post
Share on other sites
Zarquan    988
4 minutes ago, mathmanican said:

Done.  2600kg of 720K chlorine, above 800kg of 450K supercoolant.  Here is the prediction. 

image.png.79f32f9b89ea5673daceb5a3ae06a8de.png

And here is the actual. 

image.png.c4eb7bd8950ba589fc17e7257c50b6ed.png

I would call that nigh perfect precision. 

Thanks!

26 minutes ago, mathmanican said:

FYI, all the things we discovered today completely predict what I saw in @Tonyroid post about steam turbine's deleting heat. In that post I noticed 

I actually cited the steam turbine post in my original post talking about this bug.  This begs the question, does that steam turbine bug happen if the steam is preheated to the point that 5 kg of water can never collect before boiling?

Share this post


Link to post
Share on other sites
mathmanican    3256
23 minutes ago, mathmanican said:

FYI, this means that if the mass of steam in your turbine is less than 3.675 kg/tile, then you will not see any flaking, provided you keep the temp . 

image.png.5d7001dcdede5758019d13389f32fb0d.png 

However, that prediction above requires you to keep the output water at 95C exactly. If it heats up, to 99C, then you have to have under 1.675kg/tile to prevent flaking.  So cooling your turbine with the output steam leads to more heat loss from flaking. 

image.png.224098add33dbba3b4ef046e92c623aa.png

Share this post


Link to post
Share on other sites
wachunga    374

As usual mathmanican is on the case. But for reference, my test setup was simply using debug to paint the 2 materials, advancing per frame with alt= until a boiling occurred, and then using the sample tool to read temps.

 

I wonder if there is another bug involved with the steam turbine heat deletion or if it is all just emergent phenomena of this bug. My simple solution is to drip the water into a pit to prevent sideways gas movement. But perhaps the buggy sideways movement is just the unintuitive result of rapid flash boiling?

 

Share this post


Link to post
Share on other sites
Zarquan    988
44 minutes ago, mathmanican said:

However, that prediction above requires you to keep the output water at 95C exactly. If it heats up, to 99C, then you have to have under 1.675kg/tile to prevent flaking.  So cooling your turbine with the output steam leads to more heat loss from flaking. 

Keep in mind that if there is no immediate flaking, the water will be naturally heated by the steam.  Therefore, it will eventually reach 99 C regardless of output temperature.

EDIT:  I changed the experiment a little because the original one has a few problems.

I just ran a side by side test on the following setup: 

image.thumb.png.ca756733f40ed6f4899429083a65802e.png

As you can see, the left one has no petroleum and the right one does.  The amount of steam in both rooms is constant, set at the start at 400 kg/tile at 200 C with 400 kg petroleum per tile underneath.  In the left side, water is not displacing petroleum.  It is instead displacing steam.  In theory, the petroleum has little effect, but I included it so that the thermal mass of both sides would be the same to make exact comparisons make sense. 

I think we can all agree that if flaking was taking place in one of these but not the other, there would be extreme heat deletion due to the mass of the steam.  However, after some time running this, the one on the left was only marginally behind the one on the right (relatively speaking).  I think there may be another heat deletion glitch at play without the petroleum.  Basically, the steam turbine power deletion is multiple bugs and petroleum at the bottom seems to solve both of them. 

You can see the comparison in the debug window on the right.  The starting energy for both sides was 9575.7 MJ.

Share this post


Link to post
Share on other sites
MinhPham    4
13 minutes ago, Zarquan said:

Keep in mind that if there is no immediate flaking, the water will be naturally heated by the steam.  Therefore, it will eventually reach 99 C regardless of output temperature.

I just ran a side by side test on the following setup: 

image.thumb.png.227c39485f741b13b3a9945c7647b090.png

As you can see, the left one has no petroleum and the right one does.  The amount of steam in both rooms is constant, set at the start at 900 kg/tile at 200 C.  I think we can all agree that if flaking was taking place in one of these but not the other, there would be extreme heat deletion due to the mass of the steam.  However, after some time running this, the one on the left was only marginally behind the one on the right.  I think there may be another heat deletion glitch at play without the petroleum.  Basically, the steam turbine power deletion is multiple bugs and petroleum at the bottom seems to solve both of them. 

I'm not sure if the petroleum layer actually solve the heat deletion bug, but even if it does, you have to deal with the mass deletion bug instead ....

Share this post


Link to post
Share on other sites
Zarquan    988
3 minutes ago, MinhPham said:

I'm not sure if the petroleum layer actually solve the heat deletion bug, but even if it does, you have to deal with the mass deletion bug instead ....

I haven't seen any mass deletion in my setup.  I don't think it exists in this context. 

My flaking-theory on the build is that the petroleum has a higher thermal conductivity, so it is better at boiling the steam before 5 kg can gather, thereby preventing flaking.  If you look at the original post, you will see a significant reduction in heat deletion.

 

Share this post


Link to post
Share on other sites
mathmanican    3256
47 minutes ago, Zarquan said:

I think there may be another heat deletion glitch at play without the petroleum.

I'm with you there.  I still believe that gas tiles swap mass periodically, keeping the same temperature, in a left/right manner (I haven't been able to isolate this, and it appears random (so probably attached to some RNG - brownian motion simulator).  It would not surprise me if this was not the actual thing happening, but instead what is happening is that thermal calculations happen every 0.1s, but matter actually moves every 0.2 sec, and somewhere in the disparity, the moved matter has a temp altercation. 

Here's a fun experiment.

image.thumb.png.0b141d91305993e215fbad669d7d3eb7.png

The super coolant sink under each turbine is hot enough to keep the turbines at max capacity always. Starting amounts of everything are equal.  The left most turbine stays at 100% uptime. I know the thermal contact points are more on both the left and right, so you would expect less heat to be sucked away. NOPE. The middle turbine has lost the most heat from the super coolant pool.  The turbine on the right has lost almost the same amount of heat, but the power generated is MUCH less (so worst design).  The turbine on the left however runs at 100% capacity, AND has lost the least amount of heat.  I actually think a heat transfer bug is creating heat in this setup. 

Starting amounts were 20kg steam at 450K, and 920kg supercoolant at 500K. Thermium tiles, gold conveyor bridges. I put it on ultra for a bit, and it just got worse. I realized the picture above has a block of insulation on the tile (oops), so I redid the experiment. Same results.  I swapped the bridges to all thermim, and the disparity lessened. I added mesh tile under the left most vent, and it killed the efficienty (forming beads at that height broke the gain. 

Honestly, I think the design on the left adds extra energy, above what you should expect. And I still think it has to do with gas flow dynamics. 

 

 

1 hour ago, Zarquan said:

I haven't seen any mass deletion in my setup.

I saw no mass deletion on the experiment above. 

Share this post


Link to post
Share on other sites
psusi    259

So does any of this explain why Saturnus' hydrogen vent tamer slowly deletes water?

Share this post


Link to post
Share on other sites
mathmanican    3256

Behold. A 10kg/s crude to petroleum boiler.

image.thumb.png.9a349683aec891f7acbd4ce96b260992.png

Igneous rock is the best one for solid to liquid transfer.  I played around with other options (10-39 kg of Naptha is amazing stuff), but this picture above is quite simple. Incoming crude at  about 370K. Outgoing petro at 548K ....  Using 2 vents makes sure that the crude always has somewhere to escape for flaking to happen. The lip above the vents is to capture some of the heat from the newly created petro to make sure the new crude has enough heat to enable the conversion. As long as the crude gets to within 227K of the phase transfer state, then it boils.  The newly created petro guarantees this always happens.  Want to boil more? Add more vents and go sideways. A lot smaller than a legit boiler. :) 

I'll probably work on a post, and name it "Phase Up - A magical Phase Change Converter..." or something else derpy. I'll gather a ton of examples first.  It's basically a matter converter, but this time a phase change converter.  Small, simple, game breaking. 

Share this post


Link to post
Share on other sites
mathmanican    3256

So I think using a metal refinery with lead or magma we can boil 10 kg/s crude to sour gas (crude to petro then 2 tiles later petro to SG) . Then capture that heat energy to power 15 steam turbines running at 85% capacity before freezing it to Methane and then back to NG. No need to preheat anymore. Use the extra 15% to add aquatuners to make liquid o2 and h2. It's a swiss army knife and happens in a tiny box.

Share this post


Link to post
Share on other sites
TripleM999    235
7 hours ago, mathmanican said:

I'm with you there.  I still believe that gas tiles swap mass periodically, keeping the same temperature, in a left/right manner (I haven't been able to isolate this, and it appears random (so probably attached to some RNG - brownian motion simulator).  It would not surprise me if this was not the actual thing happening, but instead what is happening is that thermal calculations happen every 0.1s, but matter actually moves every 0.2 sec, and somewhere in the disparity, the moved matter has a temp altercation.

I observed something similar with my 30kg NG reactor (as you can see in the thermal overlay) and the concept car. The sour gas in the heat exchanger with NG is much colder, than it probably should, and it gets colder and colder over time up to the point that it has minus degree celcius immediately, when leaving the boiler.

Share this post


Link to post
Share on other sites
Prince Mandor    178
7 hours ago, mathmanican said:

Behold. A 10kg/s crude to petroleum boiler.

[block]image.thumb.png.9a349683aec891f7acbd4ce96b260992.png

Igneous rock is the best one for solid to liquid transfer.  I played around with other options (10-39 kg of Naptha is amazing stuff), but this picture above is quite simple. Incoming crude at  about 370K. Outgoing petro at 548K ....  Using 2 vents makes sure that the crude always has somewhere to escape for flaking to happen. The lip above the vents is to capture some of the heat from the newly created petro to make sure the new crude has enough heat to enable the conversion. As long as the crude gets to within 227K of the phase transfer state, then it boils.  The newly created petro guarantees this always happens.  Want to boil more? Add more vents and go sideways. A lot smaller than a legit boiler. [block]:) 

I'll probably work on a post, and name it "Phase Up - A magical Phase Change Converter..." or something else derpy. I'll gather a ton of examples first.  It's basically a matter converter, but this time a phase change converter.  Small, simple, game breaking. 

Pardon... Can you explain what happens here? I don't understand this glitch.

Do phase change from oil to petro create extra thermal energy? Or just flaking dont reduce a plate temperature?

Share this post


Link to post
Share on other sites
psusi    259

So you can say, use molten glass to heat a tile to over 600 C, then drip exactly 5 kg packets of oil onto it, and it will flash boil to sour gas without actually cooling off the tile?

It doesn't work the other way though does it?  i.e. if 600 C hot sour gas hits a cold plate it doesn't instantly flash freeze without adding heat to the cold plate?

Share this post


Link to post
Share on other sites
mathmanican    3256
5 hours ago, Prince Mandor said:

Can you explain what happens here?

And then start back at the top of this thread and read again. 

4 hours ago, suxkar said:

I missed these blasphemous deeds

I'll make a post with lots more soon, and give a brief explanation of the bug (would anyone describe my posts as brief?) Though the explanations in here by @Zarquan and @wachunga provide pretty much all the details needed.

Share this post


Link to post
Share on other sites
mathmanican    3256

Here are two uses of flaking, in your favor, in a sour gas boiler.  First, we boil crude to petro (beware, if the crude flow stops, this will break - gotta build in some safety measures (as simple as separating the two heating chambers, only heating the left chamber and passing off heat to the right as needed).  Then in the steam turbine room we purposefully use flaking (and a bypass pump set to 10g to preserve liquid with minimal heat transfer, or to 0.1g) to take the output from 5 turbines and phase it up as well (7kg of naptha does wonders - generating even more heat...). This eliminates heat loss from steam turbines, and guarantees heat gain. 

image.png.7f25f294294adc206c1ba5c8d8e3448c.pngimage.png.d62e4c3aa316027fabb9987fbb48a83f.png

Then you can use a temp sensor at the end of the SG run to make sure you capture as much heat from the SG as possible, before sending it to the next set of turbines... A regular bypass pump is small and efficient at this, so just put a filter on a 0.1s loop, and then use a shutoff to grab from that when you need to eject packets.  It does have overpressure issues, but I'll plan for those another way if I can. For now, this seems to be pretty stable. 

image.png.aa913a38e731b1248c07686d7cea0c5a.png

Update: I can't eject heat fast enough, as the gas layer goes from vacuum on the right, to 500kg on the left (Thanks @TripleM999 for the gas flow predictions). The heat in this SG is too much for the turbines to handle, so I'll either have a couple staged bypass pumps to keep mass lower, or block off some turbines.  Gotta go do some math to find the equilibrium temps...

The level of ONI abuse has phased up. 

Share this post


Link to post
Share on other sites
mathmanican    3256

@Zarquan, I think the flaking effect has a side preference. For example if you mirror this contraption in steam turbines, flaking doesn't work.

image.png.489d9d0a847f1de6f8357c704b908315.png

I believe the flaked liquid needs to be able to push either up or left to flake, with the phase changed liquid/gas appearing in the contact point. Those are initial thoughts, and I'm sure we'll figure out all the mechanics. In the crude to petro boiler above, you'll see that the right vent has vacuum over it.  This is because all flaking is happening on that tile.  I can probably remove one of my igneous rock tiles without affecting the flaking rate, while halving the heat transfer rate (gotta conserve power). 

Edit: It appears instead to be a different issue.  Things can flake on both sides.  However, I don't think things will flake if they get within 3-3.5 degrees of their vaporization point (at least water).  You can get 7kg of Naptha to flake 95C water.  however, if the water makes it up to, say, 98C, then no flaking occurs.  So if surrounding temps are 200+, and water doesn't insta-flake, then heat conduction will boil it just the same. Then the next bit of water coming in will flake before it has any time to exchange heat. But if the surrounding temps are not enough to insta boil things that don't flake, then you get a build up. 

So, another requirement is that you cannot get the temperature too close to vaporization points, otherwise flaking stops. 

Share this post


Link to post
Share on other sites