Jump to content

Let's finally figure out the Steam Turbine Heat Deletion Issue


Recommended Posts

The more I think about this feature, the more it reminds me of the old liquid dripping bug that lead to the BorgCube (only liquid-liquid transfers get a 625 multiplier). To enable that bug you wanted a small bit of liquid on top of a large cell of liquid. The large cell would be completely cooled by the small cell. Though if I remember right, it was assumed that this occurred because the game treated the small cell as if it had the same mass as a full cell.  If instead, what really happened was a temp swap vertically, and then super rapid conduction, that would explain the issue.  

Whether it is the same issue or not is irrelevant. The fact is that this bug appears all over the place.  It's been an annoyance of many people for quite a long time in steam turbines. It can explain unexpected, and sometimes unreproducible, heat loss in any contraption that temporarily or permanently has a mass gradient. It can amplify the cooling power of horizontal gas heat exchangers to the bewilderment of a careful designer.  It needs to be addressed. 

Link to comment
Share on other sites

So, I'm still trying to figure out the whole "heat creation bug" in steam turbines.  We've narrowed it down to exclude the gas swapping issue. For really small amounts of steam, the fact that you don't lose 1.5C upon phase change from as much steam accounts for extra heat gain in tiny steam environments. But I still have no idea where some of the extra heat comes from (it's small, but there). 

Here is my most recent test.

image.thumb.png.87f912c47cfa905043a19d50a314cf9d.png

9kg of steam per tile in each chamber (this seemed to barely have the best setup in my previous designs). The only difference is the mass of liquid in each room. The upper left has 10kg/tile crude and petro. The next has 20kg/tile, and so on, up to 100kg/tile in the bottom right.  The different design is there for control to compare (and it generates what I expect, around 554W.  Every other turbine generates between 560.5 (upper left 10kg/tile) and 560.9 (70kg/tile). The values are all close, but do rise to a max at 560.9W, and then drop to 560.7 range. So it looks like one load of 200kg crude, one load of 200kg petro, and then drop in 1 load of 200kg of water might be an ideal setup (getting you a few extra free watts). 

I plan to mirror this to see if liquid flow patterns could be at play. Just don't have time for a while. 

 

Link to comment
Share on other sites

2 hours ago, mathmanican said:

Whether it is the same issue or not is irrelevant. The fact is that this bug appears all over the place.  It's been an annoyance of many people for quite a long time in steam turbines. It can explain unexpected, and sometimes unreproducible, heat loss in any contraption that temporarily or permanently has a mass gradient. It can amplify the cooling power of horizontal gas heat exchangers to the bewilderment of a careful designer.  It needs to be addressed.

The swap issue for sure has to vanish, the "approximation" is completely wrong. For gas heat exchangers one has then to only pay attention to the instant "conduction" between neighboring tiles at the 1/10 chance. This can be circumvented then with high enough pressure. Or maybe this whole random stuff has all to vanish, but that would be probably to much to ask/change.

Link to comment
Share on other sites

On the topic of mass deletion, I have a conjecture. The game vents liquid every 5 ticks. However on save/load it outputs liquid the second tick in. The turbine draws in sream every tick. So there is a 1/5th chance when you restart that the time between venting will be 6 ticks. This means 400g of steam will be stuck in the turbine that can't vent. It also means on restart there is a 3/5 chance that one segment of pipe will have less than 2000g in it. There is probably an internal buffer that stores a bit of excess to mitigate this. But if you get unlucky 1/5 of the time a few in a row....

Gonna have to abuse save/load a few times to check. No access now but it would not surprise me if this is the issue. Basically undetectable in high pressure environments but a game breaker in low pressure. 

Save/load = biggest bug of all.... probably won't get fixed.

Link to comment
Share on other sites

14 hours ago, mathmanican said:

A configuration like this one will let us use a single liquid off the left, and never overpressurize.  It will need some tweaking to get it started (similar to the sour gas boilers), and probably another row of gas tiles across the top, but it will work. 

image.png.5923ccc75ff35641647c72ad8554bb11.png

The key is the insulation tile between the two airflow tiles.  We now are using air lift pumps (thanks @socooo). The extra insulation tile is  needed to stop the waterfall and start the beading.  It does a very  nice job of dropping the temp on 9999kg of gas from 100C down to 0C in a few seconds.... 

The level of abuse is taking on new levels. I hope the devs laugh tomorrow when they come in to work. We love the game guys.  I hope you take as much joy in reading these posts as I take in making them. Now please fix that "temp swamp" issue, and everyone will be extremely happy they don't lose a bit of heat from their turbines (and never realize the extreme abuse that mechanic led to).

Took this bit and made it to the Temperature Swamp Borg Doomsday Device:

TempSwapBorg.png.9560b2461d834a7fe5de3ae72dea2916.png

It assimilates surrounding hydrogen to make itself stronger. Every other gas is liquified, which will eventually lead to complete freeze of the asteroid. At the moment, the aquatuner is running from time to time, but it will need and use less and less energy over time.

It looks so ridiculous, when oxygen begins do drop out of the skies... even further away from the device. Btw. liquifying PO will clean it of pollution AND germs, just in case someone does not know.

borgridiculous.png.a314c1dfb14b76747b450a105f1237ae.png

Everything but the supercoolant could probably be the cheapest material. And the supercoolant is really only needed to reach extreme temperatures, with temps around -10 to 0°C, the piss cooler would quite do.

Link to comment
Share on other sites

15 hours ago, mathmanican said:

I guess we could try to crack why right flowing stair heat exchangers are bugged

image.thumb.png.38005a32fbe6a6fc1f8d4efaf5550a19.png

You have a more intuitive grasp of liquid flow mechanics so maybe this is an "ah ha!" for you. Top is start condition, bottom is after one tick. Left side behaves properly with 25% of the mass difference (10kg) flowing rightwards with the temperature calculated correctly ((40*300.5+10*300)/50). On right side, the mass flow is correct but temperature for middle cell is not. That middle cell gets 300.4 regardless of what the right cell is (assuming the right cell isn't higher mass). Seems like the middle cell temperature is calculated as if nothing is flowing further rightwards, but mass does end up flowing. After one more tick, that middle cell gets the temperature from 70kg of 300C flowing into 40kg of 300.4C, but again with the correct mass reflecting 70kg flowing into 40kg flowing into 10kg.

I used small temperature deltas so conduction would not occur to complicate things. But if you do want to complicate things, my testing suggests that cell to cell conduction is calculated first, then cell to cell liquid flow, then cell to building conduction. I didn't get so far as to see where pipe to piped fluid conduction and piped flow happens.

I initially thought the bug was in the interaction of flowing liquids with buildings (pipes in the case of heat exchangers), but looks like it's just liquid flowing rightwards for more than one cell. When that liquid is flowing into hotter liquid, heat is created. When flowing into colder liquid, heat is destroyed.

Link to comment
Share on other sites

1 hour ago, wachunga said:

You have a more intuitive grasp of liquid flow mechanics so maybe this is an "ah ha!" for you.

I generally look for your stuff when I want to understand heat transfer. This gives me something to play with. Hopefully we can crack this.

Do you know how temps are rounded on display? With masses it is always the floor (rounded down). Always.

I'm on linux and my debug tools don't display correct info always. Mass is always off but temp seems to be correct.

My first thoughts on the above is that they are using two arrays to update and grabbing the wrong number for the heat computation. I might even know what number. Gotta go read my own stuff again.

Got some ideas. Now I just need ways to get large amounts of liquid at different masses next to each other. Bypass pumps again. Then we can generate massive amounts of heat...... (massive might be an overstatement...)

Link to comment
Share on other sites

The mass with the debug sample tool is 1.013x the actual value for whatever reason. Seems like the mouseover display rounds temperature to the nearest first decimal with .x5 going up, but I use what sample says whenever I can.

That fluid flow bug exist with gases also, but it somehow depends on the order in which I paint the cells. Both flowing right or left can be buggy or correct. Or I may be losing my mind.

Link to comment
Share on other sites

1 minute ago, wachunga said:

Both flowing right or left can be buggy or correct

Did you notice this as well with liquids? I noticed alternating patterns with gas flow but @TripleM999 found them more random. I have never seen random liquid flow horizontally. It is always perfectly predictable.

Link to comment
Share on other sites

 

23 minutes ago, mathmanican said:

Did you notice this as well with liquids? I noticed alternating patterns with gas flow but @TripleM999 found them more random. I have never seen random liquid flow horizontally. It is always perfectly predictable.

I've tried a couple times to reproduce it in liquid but haven't been able to so far.

@mathmanican, just to grab your attention again. I'm fairly confident that at one point the simulation ran differently under linux than windows (I'm on windows). Back before the official release, cell to cell heat was governed by lowest conductivity, but there was a bug report from someone on linux that showed linux using some kind of average instead. After the release, windows became what it is now, the geometric average. I suspect that's what linux was using. So I wouldn't be too surprised if there are still differences between linux and windows versions, just fyi.

Edit: Found the bug report for posterity's sake.

 

Link to comment
Share on other sites

When i made the supercoolant flaking turbine array i barely saved at all and used quite a high mass of steam. The steam was basically completely gone after around 150 cycles. So i would conclude the bug in it's core has nothng to do with pressure or save/load stuff. Of course the bug still might be amplified by it.
My best guess at the moment is that something goes wrong when gas wants to move into one tile and at the same time another tile is forced to go into the same chosen tile (for example because of a phase change or dripping).

Same thing could explain why liquid vents sometimes delete gas even though the gas could escape.

Here is a showcase of the issue:
grafik.thumb.png.c27b6ce80e99ac473e4cd715ed26cdc0.png

Water input: 200g/s
Steam: 200°C, 10kg/Tile

The Carbon Dioxide will be deleted after a few frames when it is under the liquid valve at the wrong time. I didn't go through it frame by frame yet. I tested this with diffrent steam conditions and it always happend reliably.

The placement of the valve does not change what is happening either.

 

 

 

 

Link to comment
Share on other sites

5 hours ago, Manarz said:

The Carbon Dioxide will be deleted after a few frames when it is under the liquid valve at the wrong time.

This is the gas deletion bug, which is happening in place of the old matter conversion bug.

It's a known bug for a year, the older one was for years.

I don't really think it's involved into the actual Steam turbine heat deletion, since studies have been donne with full steam room. There's only water and steam, initially, and bug was noticed anyway. Therefore it's a heat deletion bug, not a matter deletion bug.

Link to comment
Share on other sites

9 hours ago, wachunga said:

then cell to cell liquid flow,

So I'm going through the liquid flow spreadsheet I made last year, and adding an extra row for new temps. Here's a brief screenshot, and if things all check out then I'll make a new one that includes the temp computations and post it.

image.thumb.png.b68e3786b05788ccbdc17e743ec5acec.png

It appears that they use the "InflowMass" (which I apparently also called CellInflow) in their computation. I want to check this out to a lot more levels, and consider edge cases too, but note that they are using the value at the end of a bunch of computations and using a weighted average at the start of a bunch of computations (so one value from the post array, and another from the pre-array).  This is definitely going to screw up heat transfer and NOT balance heat. 

9 minutes ago, OxCD said:

Therefore it's a heat deletion bug, not a matter deletion bug.

I think we've got the heat deletion bug solved (temperature swapping when heat equalizing is not possible, only ever resulting in a loss of energy). Lots of people have complained in this forum and on reddit that they lose steam (matter deletion) in their turbine setups. I have not seen it personally, but I also have not played for thousands of cycles ever on a single map.  So I want to recreate it, reproduce it, and figure out what's going on.

23 minutes ago, Manarz said:

The Carbon Dioxide will be deleted after a few frames

This one I'm very well aware of, and @OxCD is spot on that this has been known (it was introduced, or at least became quite pronounced, with the end of matter conversion - another evil contraption from last year).

I'll play with high pressure water/steam rooms and see if I can destroy tons of steam and see why it happens.  I know I can delete other gases (it's a gas trapping issue) . I wonder if the issue here is that steam and petro are being deleted in equal amounts (a common thing I'm seeing with flaking and other places). 

29 minutes ago, Manarz said:

When i made the supercoolant flaking turbine array

In that array, you did not have a single gas. As such, what @OxCD applied directly.  The issue I want to track down is why people say their "steam only" builds with a vent in petroleum is loosing mass.  It appears quite frequently in reddit and discord, and occasionally here. I have yet to reproduce it.  I'd love someone to share a build that they know has been loosing steam, so I can dissect it. 

Link to comment
Share on other sites

I knew that the bug is already known but i wasn't sure if it is really fully understood and wether all it's "variations" have been found. What i personally didn't knew was that the mass is deleted even if it's not directly above a vent but u guys probably were aware.

Was the mass deletion in turbines present before the matter conversion fix?

21 minutes ago, mathmanican said:

I wonder if the issue here is that steam and petro are being deleted in equal amounts

I cannot remember how much steam i put into the supercoolant flaking array but i can definately say that supercoolant got deleted as well. I started with 400kg per tile and now its down to like 380-390kg. I don't think its a 1:1 deletion ratio.

 

 

Link to comment
Share on other sites

21 minutes ago, Manarz said:

Was the mass deletion in turbines present before the matter conversion fix?

Mass deletion was a big issue for a long time (the popularity of SPOMS). Then they tried to "fix" it, which lead to matter conversion (SPOMS producing way too much hydrogen, till matter conversion lead to 100% hydrogen...). That got removed, and we came back to mass deletion. I don't know if they every fully got rid of it, but they decided that losing a bit of mass preferrable to matter conversion (excellent choice in my opinion of you have to pick).  

The turbine, in it's current form, is quite new comparatively.  The heat deletion bug was noticed long after matter conversion died. Not sure on the steam deletion issue.  I remember that directly after matter conversion was removed, the bug you noticed with gasses getting deleted started to be more prevalent.  There was a specific update where @Lifegrow helped me see exactly what you showed when over vents, but I also know it happens when a single gas gets cornered by other things (something that would have happened quite a bit in your supercoolant array). It is not a surprise to me that the steam was deleted much more than the super coolant, as the steam never liquified. 

Slime offgassing is perhaps one of the places this has been around forever.  You loose chlorine in any room that lets slime off gas.  I'm pretty sure it's the same issue.  The Chlorine will eventually all disappear.

But these are two gasses, not one.  That's the connundrum.  Why is steam disappearing when there is only steam...  If people complaining about the issue happen to not notice a 20g blob of C02 sneaking into their turbine (from teleporting upwards through a liquid lock), then this could easily explain it. The CO2 would disappear quickly, but so could some steam... That, to me, is a reasonable explanation.  However, the most recent update should address this, as CO2 won't teleport upwards 100 tiles anymore. 

I guess I'll have to do some more reading on this, and gathering a collection of posts that we can dissect. 

7 hours ago, wachunga said:

The mass with the debug sample tool is 1.013x the actual value for whatever reason. Seems like the mouseover display rounds temperature to the nearest first decimal with .x5 going up, but I use what sample says whenever I can.

Thanks for letting me know this isn't just a linux thing.  Has the 1.013 thing been complained about to the devs. It makes no sense. I guess no-debug for masses (but remember they always display the floor), and then debug for temperature....  I like to work with masses under 5kg because then I get to see 5 sig-figs without the 1.013 thing

Also, If my computations are correct, then 360.4444444 K is being displayed in debug as 360.445 K.  So maybe they aren't rounding to nearest value? Other temp values are rounding correctly, but that one is not (even though it is an intermediate step in a several time step computation without errors). I wonder what they are using for displaying values (or my computations are off...)

Link to comment
Share on other sites

I figured I'd redo @Saturnus's tests from here (middle of page 3). 

image.thumb.png.343a5586d01b65bc6afa1a15db3e19a5.png

The majority of the heat loss occurs in the first few steps. I'm going to isolate what happens there, as I think if I can predict and explain these, then we've got the whole story. The original tests looked at overall patterns, not individual cell-to-cell interactions.  

Found something quite fun. Vertical heat conduction is different in these stair case builds, which accounts for the large difference in performance. Note the temps above the last radiant filled pipe. (the masses are a tad off (they fluctate), but those two temps are constant... (I had to vent out the cold liquid near the base as it's hard to see anything near the top of the exchanger because of rapidly fluctuating mass, so I only have liquid in pipes at the very bottom.)

image.png.930f855d9c0c546fd9f3909dbaa25c6c.png  image.png.39c12252d905650f6ad52492af387b49.png

I have not yet cracked multilayer liquid flow (have guesses), but this one is quite odd for conduction. 

Link to comment
Share on other sites

Here is my working theory

  • Staircase going down left (right to left flow).  Conduction is performed and since both cells on top are 80, no change happens. However, the cell below is colder, so there is a change in temp here. However,  then flow occurs and the left cell drops all mass down (vertical min flow isn't surpassed). As such the colder temp liquid drops (an outflow - gets ignored). Then this cell grabs 1/4 of the 80C cell to the right (the colder stuff already fell), and keeps the 80C temp. The temp remains at 80C always, never changing. Since computations are done left to right, top to bottom, this cell's temp is fixed at 80C. There is no inflow from above or to the left of this elbow cell, 
  • Staircase going down to right (left to right flow - bugged one). Conduction is performed, and the cell in the elbow cools down from the cell below. This time the cell above the stair gets to push some mass right. When the cell on the elbow performs it's computation, it actually looses all the current mass by sending it down, however the incoming mass (from the cell above the stair) performs a weighted average with the current cell's mass (before sending fluid down - the bug @wachunga already noticed). This means the new temp on the elbow cell is lower. 

Compound this little tiny bit along 24 stairs, and we have massive heat deletion. If this sparked anyone and helped add an "ahah" moment, hooray! Please share. 

Basically, right flowing liquid gets to amplify conduction in a weighted average, whereas left flowing liquid does not.  So you can amplify heating or cooling on right flowing stuff. Thoughts?

 

Link to comment
Share on other sites

22 hours ago, mathmanican said:

So, I'm still trying to figure out the whole "heat creation bug" in steam turbines.  We've narrowed it down to exclude the gas swapping issue. For really small amounts of steam, the fact that you don't lose 1.5C upon phase change from as much steam accounts for extra heat gain in tiny steam environments. But I still have no idea where some of the extra heat comes from (it's small, but there). 

Here is my most recent test.

image.thumb.png.87f912c47cfa905043a19d50a314cf9d.png

9kg of steam per tile in each chamber (this seemed to barely have the best setup in my previous designs). The only difference is the mass of liquid in each room. The upper left has 10kg/tile crude and petro. The next has 20kg/tile, and so on, up to 100kg/tile in the bottom right.  The different design is there for control to compare (and it generates what I expect, around 554W.  Every other turbine generates between 560.5 (upper left 10kg/tile) and 560.9 (70kg/tile). The values are all close, but do rise to a max at 560.9W, and then drop to 560.7 range. So it looks like one load of 200kg crude, one load of 200kg petro, and then drop in 1 load of 200kg of water might be an ideal setup (getting you a few extra free watts). 

I plan to mirror this to see if liquid flow patterns could be at play. Just don't have time for a while. 

 

I tried to reproduce the 560Watts but cannot do it. With the same setup as u have i only reach 554W...
I tested atleast 30 diffrent variations and i never got the magic heat u found. What could i possibly doing wrong?
Is this a material thing? I tried thermium, steel and copper in diffrent variations.

Link to comment
Share on other sites

8 hours ago, mathmanican said:

Here is my working theory.

If this working theory is correct, then they have the correct implementation vertically, but incorrect implementation horizontally.  It could be as simple as grabbing the cell mass from an incorrect array when computing combined values. Vertically they grab the right number, but horizontally they don't. 

@wachunga, you mentioned in the waterfall boiler that you saw backflow conduction.  If you did, then that conflicts with this theory, so I may study that design to counter this argument.  The fact that the temps is always 80C on the right to left flow elbow, above the first pipe segment, makes me question if conduction really is happening. I guess I need a larger delta to be sure.  Time for more tests. 

Link to comment
Share on other sites

12 hours ago, mathmanican said:

Lots of people have complained in this forum and on reddit that they lose steam (matter deletion) in their turbine setups

hey I remember this, and I had a bug report about it.  One thing I noticed (didn't exhaustively test) was on a prior build it wasn't happening:

 

Link to comment
Share on other sites

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.

×
  • Create New...