Jump to content

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


Recommended Posts

So, @mathmanican perfectly minimizes turbine heat loss, @wachunga casually solves the underlying cause in the first response, and @TripleM999 models random fluid dynamics all on the first page. I'm eagerly awaiting the paper to be published in Nature soon.

I would guess wachunga's explanation also explains why you can get 5 conversions of brine/salt water to salt per instance of boiling (if that's not fixed yet - 4 tiles plus building transfer?).

Link to comment
Share on other sites

1 hour ago, nakomaru said:

I'm eagerly awaiting the paper to be published in Nature soon.

We're waiting for your contribution. The paper won't be complete without it! :)   

1 hour ago, nakomaru said:

I would guess wachunga's explanation also explains why you can get 5 conversions of brine/salt water to salt per instance of boiling (if that's not fixed yet - 4 tiles plus building transfer?)

We just need you to confirm that this is the reason.  Then I guess we've got the paper ready to wrap up. :lol:

Link to comment
Share on other sites

5 hours ago, TripleM999 said:

I will test soon with oxygen.

It is either bad luck, or it is, as the system works. With oxygen i have an average of 7.9 equalized/swapped tiles over 10 runs, with hydrogen i have an average of 9.9. Fits quite nicely to the flow rates though. average percentage of equalized/swapped tiles = 1 / flow percentage per tick.

Thesis does not hold. Checked again with polluted oxygen, average was 8.9.

Datapoints:

- Hydrogen: 11, 8, 11, 12, 13, 7, 7, 10, 10, 10

- Oxygen: 11, 6, 11, 11, 5, 3, 6, 10, 5, 11

- Polluted Oxygen: 15, 7, 11, 10, 7, 7, 8, 6, 10, 8

Link to comment
Share on other sites

Scientificly speaking is your sample size big enough to actually make a definitive statement yet?
Damn i forgot how to account for all that stuff. 10x100 samples to see a 2% deviation sounds too little.

Link to comment
Share on other sites

37 minutes ago, Manarz said:

Scientificly speaking is your sample size big enough to actually make a definitive statement yet?
Damn i forgot how to account for all that stuff.

Of course not, but my eyes begin to bleed, when looking further at this motley checkerboard. :anonymous:

3 hours ago, nakomaru said:

TripleM999 models random fluid dynamics

I thought, i was using gases... my bad. :lol:

 

Btw. i think, the spontaneous random heat equalization, even if done right, is bad for the efficiency of any gas heat exchanger. I assume, they wanted to simulate the mixing of gases. Though flowing gases do not behave that way.

Link to comment
Share on other sites

2 hours ago, TripleM999 said:

my eyes begin to bleed, when looking further at this motley checkerboard.

I hear ya.

image.png.f6a9709a9c047d53af40dbbae1ab67bc.png

I have a much larger grid of these, that I'm building for lots of alternate design tests. 

The 5 on the left differ in only total amounts of steam (from 100kg total steam on the left up to 500kg total steam on the right, that's total steam, not steam per tile). The 5 on the right differ in the same way (100kg up to 500kg). The  only difference between the two is the 5 on the right has the vent 1 tile lower.  The design is made so that all heat is added on the left, with low mass on left going to high mass on right. This is true in every picture, with essentially the exact same mass gradient in all 10 images, but lower temp gradients because of the mass differences. From left to right, we have increasing mass and decreasing temps. 

Thoughts:

  • If @TripleM999's (3) is correct, namely, "the tile swaps it's temperature with the left or right neighbor, total heat changes, if the mass of the tiles is different", then in all cases any time swapping occurs, we should see an increase in heat.
  • If @Manarz's observation, "in all my tests horizontal swapping of temperatures only occurred from the higher pressure to the lower pressure tile. If that's a rule you could only ever delete energy with it, " then still the same conclusion would happen, minus the last comment about only being able to delete heat. Here the higher pressure tile is always the colder tile, so if tiles swap, we always send the low temp to a lower mass tile, and the high temp to a higher temp tile. 
  • Based of @TripleM999's comment, "In low pressure environments this does not play a significant role. it becomes a problem though in high pressure environments, or better high pressure gradient environments," I would have to conjecture (since the pressure gradients are the same) that each group of 5 turbines should have the same power results. (I'm wrong here, but 

Here is what happened:

  • In the first 5 turbines, there is quite a bit of variation in mass(pressure) on the tile directly under the right most turbine port. This fluctuation can be quite large, but generally never enough to cause the tile to have less pressure than the one directly left. The 5 turbines on the right very little variation in mass fluctuation on the tiles under the turbine.
  • The 5 turbines on the left have wattages in the 553W-554W range.  The one on the very left pretty much always sits above 554W, very occastionally going up to 555W or 556W. All of these pretty dang close to the maximum possible, slightly above, with less steam having a very slight advantage. 
  • The 5 turbines on the right, have wattages from 555.8W up to 563W (with the lower steam values resulting in more wattage). I have another turbine offscreen of the same design that keeps the left most tile under the turbine at 74.2g, and it is generating 568.8W (well above what it should be able to).  

Conclusions/Conjectures):

  • You absolutely can generate heat energy from temp swapping.
  • The low steam environment is creating more heat than the high steam environments. 
  • Perhaps the low steam environment is enabling the extra heat generation precisely because it enables a larger temperature gradient.  As such, when temps swap, you get more heat gain. The pressure gradient is essentially the same in all turbine builds, so temp swapping doesn't really care about the total pressure, rather the pressure gradient. I think these results completely support @TripleM999's comment that I quoted earlier.  
  • To maximize the extra heat gained, we want (1) huge temperature gradients, (2) with high temp on low pressure going to low temp on high pressure. 

New things to try.

  • Build a Thermium tepidizer in molten lead kept near 1000C that heats 95C water with just barely enough steam to keep the turbine running fulltime. 
  • Change the diamond window tile to insulated insulation (gotta keep the temp gradient). 
  • Reduce the amount of liquid in the aquatuner. 
  • Drop the aquatuner down a tile, and insulate above it, all except for the left most tile, and deliver heat this way. Tricky part will be making sure the 95C water can be heated.
  • All of this makes me look more and more at the build you have @Manarz (though I have stopped posting too much with tricked tepidizer's because I get backlash from some people).  Though I wonder if your build would be better if you dropped the vent several tiles. 

 

 

2 hours ago, TripleM999 said:

I thought, i was using gases... my bad.

Gasses are part of the "fluid" in "fluid dynamics". :) 

I also think we can use designs like this to confirm if the exchange happens 10% of the time, or however often it occurs.  If the model you've proposed is correct, then we can use it to predict what the wattage should be based on the random events happening.  We then just change the value in our model to match what we see. Too much too do. 

I'm starting to wonder if a design that looked something like the following would work nicely (maybe the liquid vent moves up higher), where we pick the flow direction based off which has a higher heat yield (left to right, or right to left).

image.png.4955f599581e813d4cc310afca340cb6.png

Link to comment
Share on other sites

1 hour ago, mathmanican said:

If @Manarz's observation, "in all my tests horizontal swapping of temperatures only occurred from the higher pressure to the lower pressure tile. If that's a rule you could only ever delete energy with it, " then still the same conclusion would happen, minus the last comment about only being able to delete heat. Here the higher pressure tile is always the colder tile, so if tiles swap, we always send the low temp to a lower mass tile, and the high temp to a higher temp tile. 

 I need to make the statement more exact:
Swapping temperature when no mass exchange happens only ever occured between high pressure, high temperature and low pressure low temperature tiles and thus always deleted heat.


But @TripleM999 finding that when mass does suddenly partially transfer obviously did create heat.

10 hours ago, TripleM999 said:

As before most cells show normal flow behavior with 19500kg, 100°C on the left and 15500kg, 3.2°C on the right. Of much interest are the abnormal cells. They have indeed equalized heat to the extent, that the left cell is now at 19500kg, 23.3°C and the right cell is at 15500kg, 99.8°C.

So i think this should be 2 diffrent mechanics here and i think u observed the second one @mathmanican

 

1 hour ago, mathmanican said:

I'm starting to wonder if a design that looked something like the following would work nicely (maybe the liquid vent moves up higher), where we pick the flow direction based off which has a higher heat yield (left to right, or right to left).

 

Part of my design was to test if one direction works better and i saw no diffrence at all.
Also dropping the vent did give me no benefit. As far as i understand the current mechanics we described here, dropping the vent only serves the purpose of avoiding horizontal heat swapping as long as the new "rising" steam is still colder than than the steamchamber. Since my new steam reaches the temperture of the top row right away i wouldnt lose much heat (/any heat) if a swap occured. Additionaly the steam turbine sucking away means that the new steam tile will have a higher mass than its neighbours so the "pure" heat deleting heatswap i described above will not occur.

 

Link to comment
Share on other sites

In my model no heat was created., but maybe i have to test another case, hot with low pressure, cold with high pressure.

With cold high pressure and hot low pressure, either nothing happens or heat is equally balanced.

7 hours ago, Manarz said:

But @TripleM999 finding that when mass does suddenly partially transfer obviously did create heat.

16 hours ago, TripleM999 said:

As before most cells show normal flow behavior with 19500kg, 100°C on the left and 15500kg, 3.2°C on the right. Of much interest are the abnormal cells. They have indeed equalized heat to the extent, that the left cell is now at 19500kg, 23.3°C and the right cell is at 15500kg, 99.8°C.

I think you and most others MISSED the point of my model. This DOES NOT create heat, it perfectly balance the heat between the two tiles, both tiles have exactly the same heat after the operation. The important part is, the heat equalizing almost reaches the initial max temperature of one tile, which i think, is the cutoff point for equalizing. As soon, as temperature of the lower pressure tile would exceed initial max temp, then the equalizing would be replaced by swapping as a simple (and wrong) approximation.

Updated current thesis for mechanic is as following:

- two adjacent tiles adjust pressure, 10%/12% (flow variable of gas) of the difference is added to the lower, substracted from the higher, temperature/heat of the resulting masses is calculated correct. This happens horizontally and vertically.

- tiles exchange heat through conduction. This happens horizontally and vertically.

- 5% random cells are choosen. (this operations involves always two tiles, so 10% as a whole)

Things, that are checked for these tiles

1. if tile above is colder, or tile below is hotter, tiles are swapped

2. Working interval [MinInitTemp,MaxInitTemp] is selected. If equalizing is possible with the left or right neighbor without exceeding initial temperatures, heat equalizing takes place, ELSEIF one temp falls below initial temps, nothing happens, ELSE temperatures are swapped as a simple "approximation"

 

I couldn't see a case, where heat could be created, only deleted:

1. if equalizing is possible without exceeding initial temps, it takes place, no heat changed

2. if one of tiles would drop below initial temps (when the cold heavy tile has more heat than the hot light tile), NOTHING happens

3. if one tile would rise above initial temps (when the heavy tile is hotter than the light tile), temperatures are swapped, heat is deleted

Link to comment
Share on other sites

2 hours ago, TripleM999 said:

I think you and most others MISSED the point of my model. This DOES NOT create heat

You are right i looked at your numbers wrong! There was no heat created. Also all my tests never gave me any excess heat.
I fully support your current Model.

But now we need another explanaition to account for the heat created in @mathmanican's Tests.

I wonder if thats a thing that results from the internal calculations of the steamengine. (Like you get more energy out if the highest Temp of one Inlet is higher even though the overall DTU intake is the same. Maybe it does not average out correctly?)

Link to comment
Share on other sites

1 minute ago, Manarz said:

I wonder if thats a thing that results from the internal calculations of the steamengine.

Pretty sure this isn't it.  I've played around with lots of different split builds that take heat from different sides at very different temps, and it seems to be correct.  I could be wrong, so please double check. 

I would love to know why I can get extra heat, and what is causing it.  I have not fully digested all the details you two have put up, and the new solid flaking option has got a hold of my mind. 

Link to comment
Share on other sites

8 minutes ago, mathmanican said:

I would love to know why I can get extra heat, and what is causing it.  I have not fully digested all the details you two have put up, and the new solid flaking option has got a hold of my mind. 

Hey you are the one opening the threads :D

Link to comment
Share on other sites

So if two tile interaction can't explain the heat gain then my guess is three tile interaction is the key. If gas flow is anything like liquid flow then once you crack three tile interaction you've got the whole picture.

Guessing now. Game arrives at cell. It checks what above cell and left cell did to this cell (mass sent or taken, swapped, etc.) Then it determines what to send down and right along with the random calls. However extra conditions are thrown based on what happened left or above. Those extra conditions are what took forever to track down for liquids but were crucial to oddiries. 

Can you think of a way two neighboring conditions could overlap to produce heat? I am having a hard time understanding the data and conjectures given because they don't fit what I see happening. 

If a random call happened twice in succession what woul happen? Any ideas however ludicrous you want to throw are fine. 

 

@TripleM999 I'm sure the last thing you want to do now is add a third cell to each spot in your grid. :lol:

Link to comment
Share on other sites

9 minutes ago, mathmanican said:

@TripleM999 I'm sure the last thing you want to do now is add a third cell to each spot in your grid.

I already though about adding a third cell to the grid, but as of now, i'm unsure, where, and what information to get from. And how to distribute the masses and the heat.

Link to comment
Share on other sites

3 minutes ago, TripleM999 said:

i'm unsure, where, and what information to get

Makes sense. That was the last hurdle for me in cracking liquid flow. There was no randomness there which helped. I'll build more turbines which defy the model and hopefully that will help us know where to look.

I may have spent an entire week or more on cracking liquid.

Link to comment
Share on other sites

7 hours ago, mathmanican said:

Makes sense. That was the last hurdle for me in cracking liquid flow. There was no randomness there which helped. I'll build more turbines which defy the model and hopefully that will help us know where to look.

I may have spent an entire week or more on cracking liquid.

I tried several 3 tile interactions in --- , L and Reverse-L formation, for no new knowledge. There were only at most 2 tiles interacting, with all possible interactions though, so there does not seem to be any precedence. I'm out of ideas for now.

Link to comment
Share on other sites

16 minutes ago, TripleM999 said:

I'm out of ideas for now.

I'll see if I can build steam turbine designs that generate hundreds of extra wattage.  That should help track down the issue.  It might even be the liquid/gas conduction interaction that is causing the issue, and has nothing to do with gas flow.

Link to comment
Share on other sites

One new understanding i got... a simple one though... there is no calculation from left to right or from right to left. All tiles new properties are based on the current properties. I test 3 cells with 2000kg, 2000kg, and 1000kg, or vice versa and the same top down... the result was always 2000kg, 1900kg, 1100kg. Same is true for 1000kg, 2000kg, 1000kg, result after this is 1100kg, 1800kg, 1100kg. I think, it uses some kind of two 2-dimensional arrays, a current one, and a new one... all values in the new one are calculated from current one, and after this, the new one is copied over the current one.

Link to comment
Share on other sites

@TripleM999, You might need to do a cross pattern (a cell with above, below, left, right) to figure out what happens with one cell, And then you'll have to make sure each of those neighbors have a cross too.  This means you'll need a total of 13 open cells in which you can put gas.  This is because (most likely) that the cell you want to understand can be influenced by neighbors, and they are influenced by theirs. Here are the 13 cells. 

image.png.b425ec2a0ddce05f8fba0cb26010fdbd.png

However, as computations run left to right, top to bottom, you only need to have gas in all non grey cells below.

image.png.02d088e8259f0b9191731aaf2becbf80.png

I would probably just start with gas in the numbered cells, and leave the rest in vacuum, however the red neighbors of both 1 and 2 may need gas because they could influence how much gas is transferred between them and the yellow cell. The 3 grayed out tiles are mostly likely irrelevant for computations. This reduces the problem down to 10 tiles.  Thoughts?

Link to comment
Share on other sites

1 hour ago, TripleM999 said:

One new understanding i got... a simple one though... there is no calculation from left to right or from right to left. All tiles new properties are based on the current properties. I test 3 cells with 2000kg, 2000kg, and 1000kg, or vice versa and the same top down... the result was always 2000kg, 1900kg, 1100kg. Same is true for 1000kg, 2000kg, 1000kg, result after this is 1100kg, 1800kg, 1100kg. I think, it uses some kind of two 2-dimensional arrays, a current one, and a new one... all values in the new one are calculated from current one, and after this, the new one is copied over the current one.

Coming into this late, and haven't done any testing myself, just saw this and wanted to throw out a potential hypothesis:

Quote

3. the tile swaps it's temperature with the left or right neighbor, total heat changes, if the mass of the tiles is different


Don't put too much stock into this until I test it, but thinking from the engineering side - What if the horizontal heat transfers, for the sake of optimization, allocated a new heat array at the start of the calculations, and then failed to grab new data as it was updated (only using data from last frame)? So, for instance, if you have three horizontal tiles in a row (say tiles A, B, and C), and tile A was picked to swap with B, and C was also picked to swap with B (this may also be relevant in a 2 tile setup if A was picked to swap with B and B was picked to swap with A?)...

You have two arrays:

Old Array (last frame's data): A B C

New Array (data to be copied over post-swap): A B C

A would swap with B, update the new array with values from A in position B, and change values in A to values from B.

New Array is now: B A C

C would swap with B, EXCEPT it's not using the new data from the new array, still using the old array, which would mean it swaps it's data into the middle position and the old data into it's position.

This makes the new array: B C B

Deleting the heat value from A - of course, the three were close enough to swap temperatures, so the actual loss is small, but would be amplified by mass differences.

Again, I haven't seen the code or tested this; completely a hypothesis. I'll test it later tonight, just a random thought from the mind of a fellow game dev coder - I've seen things like this happen in projects before, especially in optimization-heavy/multithreaded environments.

Link to comment
Share on other sites

7 minutes ago, Beowulfe said:

Again, I haven't seen the code or tested this; completely a hypothesis. I'll test it later tonight, just a random thought from the mind of a fellow game dev coder - I've seen things like this happen in projects before, especially in optimization-heavy/multithreaded environments

This sounds exactly like what could be happening.  I can guarantee you that the liquid fluid mechanics code uses both the old array, and new array, heavily.  A simple tiny error in the update process could be the issue, In which case, this is the entire bug.  And it would definitely be a bug. I look forward to seeing your tests.  Thanks for joining the fray. 

Link to comment
Share on other sites

From a coding Perspective this makes alot of sense. you would use immutable data structures to do parallel computing of all the cells which i always automatically assumed oni is doing. If not that would sure be a way to get rif of some of the Performance issues lategame. I never profiled onis performance on my cores though. also im wondering if they use compute shaders for some stuff?

Link to comment
Share on other sites

1 hour ago, mathmanican said:

This is because (most likely) that the cell you want to understand can be influenced by neighbors, and they are influenced by theirs

That is not, what i have seen. The neighbors of a neighbor do not have any influence at all for current computation round. All, which is used, is the direct neighbors for computation of next state. Tried a simple 3 cell for this... left cell, gas at 1000000kg, 300°C, middle cell at 1000kg, 0°C, right cell at 100kg, 0°C, after one tick left cell is at 900100kg, 300°C, middle cell is at 100810kg, 297°C, right cell is at 190kg, 0°C. The left cell had no influence on the right cell whatsoever, only the middle cell.

1 hour ago, Beowulfe said:

This makes the new array: B C B

Didn't saw that neither. A cell, which got special treatment, like equalizing or swapping will not be treated special again in current round. And i set my values especially to provoke a double swap... never happened. Always only one swap, either AB, or BC, never both in the same tick. I also tried something like this:

-------------
|\\\\\|  0°C|
-------------
|100°C| 50°C|
-------------

 

something like this never happened:

-------------
|\\\\\|100°C|
-------------
| 50°C|  0°C|
-------------

@mathmanican i tried to find through singletick running, where your left steam turbine got their additional energy:

image.png.1b44beb4a74dd9a7610bcdd35a4e07

It was not possible... in single tick teleporting water will never reach its target. The rest was moving quite consistent... some equalizing here and there, hot bottom to top swapping. nothing unexpectable. It just waits one tile short, until game is unpaused, and then materialize as a whole blob onto the target. :-o There was one energy gain event, when the blob arrived. 5kg steam was flaked of the water.

Link to comment
Share on other sites

For things that are animation based, as I think of it, you need to advance per frame with alt=. How many frames per tick depends on your framerate. Off the top of my head are dripping liquids, automation, and doors.

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...