All the different ways to increase the efficiency of a nuclear power plant

Power Plants, Energy Storage and Reliable Energy Supply. All about efficient energy production. Turning parts of your factory off. Reliable and self-repairing energy.
mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

mrvn wrote:
Sun Oct 24, 2021 6:36 pm
Well, it has steam tanks. Tanks on wheels. But you aren't using them as such. There is also a lot of heat pipes. I eyeball it at ~175. Which would buffer one refueling cycle. So 2 questions (plus a bonus):
This is not using the item storage tank. Not with water like you did :). Not with steam, no storage tank 0 nein ! nada ! non !. That's fluid wagon ! Fluid doesn't flow in and out, it requires directionnal pumps. Which together with not using combinator at all is a challenge. :D

You can download the map and have a more precise count, tbh i just spammed them for they look nice. And added some here and there at the end. There's more than 175 for sure, let's take the top station, there is 8 exchanger one side, separated with pipes, that's at least 24 tiles horizontal, and there is a double row of heat pipes running each side. That's around 50 pipes per horizontal array, so at least 250 heatpipes not counting the verticals. I played with copy pasting arrays on the editor and then added more than was stricly required i think to connect what i thought was ok after the copy pasting.

Given the set up it's easy to add reactors/heat pipes on the right side of the plant. Reactors are not as efficient spacewise as heatpipes to buffer heat, but are faster to transmit it. You could modify the design to make it bigger and replace the vertical array of heat pipes with reactors. Not to feed them, just to move heat 20 tiles in 4 item.
mrvn wrote:
Sun Oct 24, 2021 6:36 pm
1) So how do you start this?

A) Do you have the trains sitting in the cold reactor and then manually trigger a refuel till steam starts to fill the trains?
B) Fill the reactors with fuel and when steam comes out the other end remove all fuel and let automatic take over?
C) Drop in exactly N fuel because you know then steam is produced?
i put fuel until the system is very hot, like 980° i did, then i put the train on automatic. If i ever need to restart, like during testing, i just cut the rail from the stacker to bays. on the very left of the picture ( we can't see the stacker ). it's written in the other post where there's a ton of explication because it could get spammy so i wanted to avoid hijacking this topic.
mrvn wrote:
Sun Oct 24, 2021 6:36 pm
I imagine you want the reactor to be a bit hotter than minimum. So when trains aren't leaving because power demand is low and the temperature equalizes the reactor doesn't get cold. But not too hot so you have lots of thermal buffer.
this doesn't make sense to me / i don't understand.

You need the reactor to be at (almost) maximum temperature when you start. 980° for example. ( ideal is max-1 full cycle for safety). ( max - 0.70 fuel cycle is ok too)

Then when 1 train pass temperature is 960 ° ( madeup illustrative number), when 2 train pass temperature is 940° , when 11 train have passed you are almost at minium temperature. When the 12th train is passing, you have lost in the ° the equivalent of 1 fuel cycle. It triggers the refuel.

I should try to clarify that: The ideal would be to have 3 cyle of fuel buffer left above 500°. And you aim at oscillating between 1+ and 3-, like 1.8 1.9 2.3 2.4 2.2 1.9. the refuel would occur at lowest point, where only 1 cycle of fuel is left in the buffer. That's because if everything is 500° it's dead. It's meant to always be able to input a precise amount of steam each tick at whatever places.

mrvn wrote:
Sun Oct 24, 2021 6:36 pm

2) Say you have full trains sitting in all the bays. Then one leaves and you pass 12 trains and refuel. No more steam is consumed.

You have 1 empty train so that is 1/12 a fuel cell taken care of as steam. 11/12th of the fuel gets buffered as heat. By my estimate the heat pipes should be enough if the reactor didn't start off too hot.

So how hot and cold does the reactor go?
That's not how it works, when the refuel occur, it means there is 1 fuel cycle worth of energy that was taken out of the initial 980°. If you suddenly stop consuming and wait for the refuel to occur you will have 980° again. Minus 4 trains containing each 82395 steam that gets auto refilled starting even before the refuel is detected, which increase the size buffer and you didn't account for your estimate.


It's written 670°-980° on the other post that's what i got during my test. It was probably started with 1 fuel cell too many. temp at 950° would have been better. but i wouldn't know until 197 760 train passes... so hey idc really :)

Also it's hard to talk about temperature, you could have a look at the map yourself, because sometimes if only the top bay is used for 5 6 trains in a row and none of the others, ( very rarely happens randomly) then the temperature in this very top extremity is 670° or so, but then the reactor is 750°, and all the other extremeties are 880 900° and the branch starts giving back heat to the reactor which spread toward the coldest point. Which prevent the ° going under 670, or at least slow and slow and slows the process. Maybe if you voluntarily block 3 bays and only use 1 at the top or bottom for more than a few heat cycle, it would change, but i'm not sure because then the refuel are heating the reactor but not spreading to the other hot area, it sort of target directly the cold area due to heat propagating faster when the ° difference is higher.
mrvn wrote:
Sun Oct 24, 2021 6:36 pm
Bonus Question:

Trains with a fluid wagon at the front (when your trains go backwards) are really slow, bad wind resistance. Do you have an extra stations in the schedule to turn the trains around so they drive forward for the long distance and backward only to turn around?
No that's a non sense argument it's a test map demonstrating the power plant, not the speed of the train.You are free to add station to turn the train to the direction you want you can download it on the other post, and i'm adding a link here too. But it's true that's something important to mention, train have to enter with the fluid wagon first, otherwise it doesn't work that happened once or twice during testing.

There is an extra station on the schedule to stop train coming to refill in if they do not have empty steam same logic as making sure nothing gets in the LTN depot. that's the waypoint at the entrance. If in case by accident i cancel a train that couldn't unload everything as it should in outpost, it comes in with 123 steam, and then it would mess up the perfect clock. Those are prevented from getting to the steam loading area.

You could, and i did at first, add a waypoint on the exit path, to make sure the train has indeed 82395 steam. (As of now the condition for train to leave is = not >= 82395.)
This and rigging an alarm would alert a player if the plant is not functionning properly. I would advise to make >=82350 instead of = 82395 for safety. This way the reactor would overheat very sligthly overtime but i wanted to show you can do it precisely, so you cannot say "meh meh meh inaccuracies meh meh meh overtime death spiral or something like flawed logic :D".


Here is a picture where everything is even smaller so it's even harder to eyeball the number of heatpipe hehe
island.png
island.png (853.1 KiB) Viewed 4349 times
That's how i worked around the storage tank limitation in one outpost but there are few different on the map :
classicoutpost.png
classicoutpost.png (306.09 KiB) Viewed 4349 times
zoomclassicoutpost.png
zoomclassicoutpost.png (424.56 KiB) Viewed 4349 times

That's not exactly the same as just plopping a few tanks for buffer and reading steam with combinator to change the train limit when the buffer is low.

It's a "fight-for-the-fish". You put a fish in between the 2 inserter and 1 grabs it, then its side own the fish until the train on the same side is empty. When the train leaves, the fish is put to the middle again. Inserter can't play the fish fight if their side has no train, so then it's the other inserter who win the fish fight. And the other train gets filled.

This make sure the one train emptying is emptied till the end before the other is tapped.

NucularIsland.zip
(3.71 MiB) Downloaded 128 times
Here is the wonderful Smoke-delivering Island map !

mrvn
Smart Inserter
Smart Inserter
Posts: 5682
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mrvn »

mmmPI wrote:
Sun Oct 24, 2021 8:02 pm
mrvn wrote:
Sun Oct 24, 2021 6:36 pm
Well, it has steam tanks. Tanks on wheels. But you aren't using them as such. There is also a lot of heat pipes. I eyeball it at ~175. Which would buffer one refueling cycle. So 2 questions (plus a bonus):
This is not using the item storage tank. Not with water like you did :). Not with steam, no storage tank 0 nein ! nada ! non !. That's fluid wagon ! Fluid doesn't flow in and out, it requires directionnal pumps. Which together with not using combinator at all is a challenge. :D

You can download the map and have a more precise count, tbh i just spammed them for they look nice. And added some here and there at the end. There's more than 175 for sure, let's take the top station, there is 8 exchanger one side, separated with pipes, that's at least 24 tiles horizontal, and there is a double row of heat pipes running each side. That's around 50 pipes per horizontal array, so at least 250 heatpipes not counting the verticals. I played with copy pasting arrays on the editor and then added more than was stricly required i think to connect what i thought was ok after the copy pasting.
Ups, I eyeballed the length of the heat pipes to 175 and forgot to double it because it's double rows. Well, one (binary) magnitude of error. Good enough. :) So it should be 2 fuel cycles thermal buffer.

Anyway, my point was to just add up all the way energy is stored in the system. One is the trains steam content, the other the heat pipes. Each train is 1/12th of a fuel cycle, not much of a contribution, and the heat pipes are 2 fuel cycles or thereabout. Just thinking aloud.
mmmPI wrote:
Sun Oct 24, 2021 8:02 pm
Given the set up it's easy to add reactors/heat pipes on the right side of the plant. Reactors are not as efficient spacewise as heatpipes to buffer heat, but are faster to transmit it. You could modify the design to make it bigger and replace the vertical array of heat pipes with reactors. Not to feed them, just to move heat 20 tiles in 4 item.
mrvn wrote:
Sun Oct 24, 2021 6:36 pm
1) So how do you start this?

A) Do you have the trains sitting in the cold reactor and then manually trigger a refuel till steam starts to fill the trains?
B) Fill the reactors with fuel and when steam comes out the other end remove all fuel and let automatic take over?
C) Drop in exactly N fuel because you know then steam is produced?
i put fuel until the system is very hot, like 980° i did, then i put the train on automatic. If i ever need to restart, like during testing, i just cut the rail from the stacker to bays. on the very left of the picture ( we can't see the stacker ). it's written in the other post where there's a ton of explication because it could get spammy so i wanted to avoid hijacking this topic.
mrvn wrote:
Sun Oct 24, 2021 6:36 pm
I imagine you want the reactor to be a bit hotter than minimum. So when trains aren't leaving because power demand is low and the temperature equalizes the reactor doesn't get cold. But not too hot so you have lots of thermal buffer.
this doesn't make sense to me / i don't understand.
It's an odd artifact that many people overlook and don't test for. Say you are running the reactor full throttle and the furthest heat exchanger is 501°C and 25 heat pipes from the reactor. Then the reactor is probably at 600°C with a 4°C drop for each heat tile. You need that large of a drop for all the generated heat to be transmitted. That's the minimal temp at which the reactor can give full power.

Now lets look at a few cases what can happen:

1) you stop fueling the reactor but consume steam

The temperature all across drops and one after another the heat exchangers stop at 500°C. The surrounding heat pipes can be a bit warmer, 1°C per distance from a heat exchanger. That is the coolest you can get.

2) you stop using steam but still fuel the reactor

The reactor rises to 1000°C and heat falls of 1°C per heat pipe. Takes a long time for the furthest heat exchanger to reach max temp of 975°C. That's the hottest you can get.

3) You counted the steam produced by the fuel cell and just 1 unit before you need to throw in a new fuel cell you stop using steam.

Since there is 1 unit of steam left in the last fuel cycle no new fuel is added. The fuel cell is all used up though so no new heat gets added. And since you don't take any steam no heat is removed by the heat exchangers. But the heat is not in equilibrium. Heat still bleeds out of the reactor into the heat pipes until the furthest heat exchanger is maybe 540°C and the reactor 565°. A 1°C gradient cross the heat pipes.

Your reactor is 35°C below the temp needed for full steam production once demand for steam returns.


Case 1 and case 2 are simply bad designs. That's what most people avoid with their control logic. Case 3 is tricky. It's the third case, and it's less extreme cousins, that causes a brownout when the reactor switches from low output to high output right around the time you refuel. Most control systems can't maintain the reactor at a higher temperature because they use the reactor being too cold as trigger to refuel. Those systems need extra steam buffers to last through the heating back up period. Thermal buffers don't help, must be steam buffers.

For this case where you count trains, and therefore steam, you can maintain the temperature. So instead of running the reactor at 600°C at full power you can run it at 700°. Then in case 3 the equilibrium is 640°C to 665°C and the reactor is still in full power range. When you throw in fuel and go to full power then furthest heat exchanger drops back to 601°C and the reactor rises back to 700°C.

And with the heat pipes enough for 2 fuel cycles you only need a 250°C range to buffer a full fuel load. So worst case, if you throw in fuel and stop using steam at the same time, your reactor should go to 950°C while the fuel cell burns and then cool down to 915°C in the long run.

Note: all numbers made up just to illustrate it. Measure it or compute it if you want the real numbers for your exact design.
mmmPI wrote:
Sun Oct 24, 2021 8:02 pm
You need the reactor to be at (almost) maximum temperature when you start. 980° for example. ( ideal is max-1 full cycle for safety). ( max - 0.70 fuel cycle is ok too)

Then when 1 train pass temperature is 960 ° ( madeup illustrative number), when 2 train pass temperature is 940° , when 11 train have passed you are almost at minium temperature. When the 12th train is passing, you have lost in the ° the equivalent of 1 fuel cycle. It triggers the refuel.

I should try to clarify that: The ideal would be to have 3 cyle of fuel buffer left above 500°. And you aim at oscillating between 1+ and 3-, like 1.8 1.9 2.3 2.4 2.2 1.9. the refuel would occur at lowest point, where only 1 cycle of fuel is left in the buffer. That's because if everything is 500° it's dead. It's meant to always be able to input a precise amount of steam each tick at whatever places.
Yeah, that's the simple view of the reactor with temperature just falling with steam used. But the system is more complex with the heat spreading over time with a huge delay. Not every part of the system cycles the same way, it ebbs and flows. If you only test drawing set amounts of energy from the reactor you never notice, it only affects when energy consumption changes significantly and then stays a long time at the new duty cycle before changing again. An example of this would be using nuclear with solar cells and accumulators. You have 0 power as long as the accumulators last at night and then 100% till solar takes back over the next day. A bit of a short cycle with only 7 or 8 minutes for the reactor to cool down before full power but you get the idea.
mmmPI wrote:
Sun Oct 24, 2021 8:02 pm
mrvn wrote:
Sun Oct 24, 2021 6:36 pm

2) Say you have full trains sitting in all the bays. Then one leaves and you pass 12 trains and refuel. No more steam is consumed.

You have 1 empty train so that is 1/12 a fuel cell taken care of as steam. 11/12th of the fuel gets buffered as heat. By my estimate the heat pipes should be enough if the reactor didn't start off too hot.

So how hot and cold does the reactor go?
That's not how it works, when the refuel occur, it means there is 1 fuel cycle worth of energy that was taken out of the initial 980°. If you suddenly stop consuming and wait for the refuel to occur you will have 980° again. Minus 4 trains containing each 82395 steam that gets auto refilled starting even before the refuel is detected, which increase the size buffer and you didn't account for your estimate.


It's written 670°-980° on the other post that's what i got during my test. It was probably started with 1 fuel cell too many. temp at 950° would have been better. but i wouldn't know until 197 760 train passes... so hey idc really :)

Also it's hard to talk about temperature, you could have a look at the map yourself, because sometimes if only the top bay is used for 5 6 trains in a row and none of the others, ( very rarely happens randomly) then the temperature in this very top extremity is 670° or so, but then the reactor is 750°, and all the other extremeties are 880 900° and the branch starts giving back heat to the reactor which spread toward the coldest point. Which prevent the ° going under 670, or at least slow and slow and slows the process. Maybe if you voluntarily block 3 bays and only use 1 at the top or bottom for more than a few heat cycle, it would change, but i'm not sure because then the refuel are heating the reactor but not spreading to the other hot area, it sort of target directly the cold area due to heat propagating faster when the ° difference is higher.
So 670°C to 980°C. Less than I expected with the 1-fuel-cycle-buffer estimate, more than I would expect from the 2-fuel cycle-buffer you have. Or maybe I calculated the heat capacity of the reactors and heat pipes wrong.

What's the 197 760 number exactly? Is that when the fraction of steam left over after 12 trains fills one extra train? Or is that when the error has accumulated to a full fuel cycle? If the later you could add or skip a train every 16480 trains for 1/12th the impact.


Only the top station is used? Ouch. How does that happen? The trains waiting at signals are supposed to pass fifo with the one waiting the longest leaving first. So in a perfect world each station should be used in turn. I often have the feeling the train order gets mixed up sometimes and only the top station getting trains to leave 5-6 times in a row would be a clear sign the trains don't do fifo. Maybe the age of the train gets reset when they repath to a different station, which they try to do when they are blocked too long.

If you see 900°C and 670°C then it will probably still change more but not that much. Should be save for this size reactor. If you have a 2x20 reactor complex then you probably run into problems. Longer distance between top and bottom stop so heat takes longer to travel and you need more of a temperature range. It's worrying though. If it would get to 1000°C you would loose heat and then all your counting is thrown off.

I would add a circuit condition to the trains schedule and have them leave round-robin so all stations get used equally. For example you can make a belt loop across all stations and throw a fish on it. At each station make the belt stop if a train is present and the train leave if a fish is present on the tile before that. So the fish arrives, the train leaves, the fish goes to the next stop. Simple and no combinator needed.
mmmPI wrote:
Sun Oct 24, 2021 8:02 pm
mrvn wrote:
Sun Oct 24, 2021 6:36 pm
Bonus Question:

Trains with a fluid wagon at the front (when your trains go backwards) are really slow, bad wind resistance. Do you have an extra stations in the schedule to turn the trains around so they drive forward for the long distance and backward only to turn around?
No that's a non sense argument it's a test map demonstrating the power plant, not the speed of the train.You are free to add station to turn the train to the direction you want you can download it on the other post, and i'm adding a link here too. But it's true that's something important to mention, train have to enter with the fluid wagon first, otherwise it doesn't work that happened once or twice during testing.

There is an extra station on the schedule to stop train coming to refill in if they do not have empty steam same logic as making sure nothing gets in the LTN depot. that's the waypoint at the entrance. If in case by accident i cancel a train that couldn't unload everything as it should in outpost, it comes in with 123 steam, and then it would mess up the perfect clock. Those are prevented from getting to the steam loading area.

You could, and i did at first, add a waypoint on the exit path, to make sure the train has indeed 82395 steam. (As of now the condition for train to leave is = not >= 82395.)
This and rigging an alarm would alert a player if the plant is not functionning properly. I would advise to make >=82350 instead of = 82395 for safety. This way the reactor would overheat very sligthly overtime but i wanted to show you can do it precisely, so you cannot say "meh meh meh inaccuracies meh meh meh overtime death spiral or something like flawed logic :D".
I would have thought you would use train full as condition. Now it makes sense that you get 12 trains per fuel cycle almost exactly.

With == 82395 I would be afraid it's anything between 82395 and 82396 exclusive. Should always be the same error per train but something you can quite see by measuring with the circuit network. After 82395+ trains you might be short one train full of steam.
Again something you can't easily test, even at 64x speed that's a long time.
mmmPI wrote:
Sun Oct 24, 2021 8:02 pm
Here is a picture where everything is even smaller so it's even harder to eyeball the number of heatpipe hehe
island.png

That's how i worked around the storage tank limitation in one outpost but there are few different on the map :
classicoutpost.png
zoomclassicoutpost.png
Verry nice. Since I haven't said it in my last post: It's a great idea, something different. Should be added as a sub-option to counting steam in the first post.

Did you use a waterfill mod to make a channel through the island or was that natural?

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

mrvn wrote:
Sun Oct 24, 2021 11:58 pm
But the heat is not in equilibrium. Heat still bleeds out of the reactor into the heat pipes until the furthest heat exchanger is maybe 540°C and the reactor 565°. A 1°C gradient cross the heat pipes.

Your reactor is 35°C below the temp needed for full steam production once demand for steam returns.
i understand i think the situation you describe, but i disagree with the intermediate conclusion. If at 1 steam left in the system you stop using steam. You will have overtime a thermal stability like you describe, where the lowest global average temperature overtime, would also happen to be spread as perfectly evenly as it could across the whole reactor for an indefinite amount of time. ( minus the strict minimum required for heat to convey 1.00000000000001° or something like that per heat pipe.)

It's not 35°C below the temp needed for full steam production. The reactor is "too cold" to transmit the heat as you think, but the heat is already moved where it needs to be.
This stabilized equilibrium means the usual colder part are hotter than when running, and the hottest part usually when running, instead had time to give away their heat ( like the reactor is exceptionnaly cold).

In normal operation you need 4°C to transmit in your made up numbers up so if 25 heat pipes distance to the furthest exchanger you need at least 100° difference between reactor assumed hottest point, and the lowest temperature point ,assumed to be the furthest exchanger, This required for the later to have enough energy/heat throughput to do max load.

But in case you stabilized your temperature at the lowest moment. You think it's the reactor that is too cold to transmit, while in fact we can see it is the heat exchanger that is too hot to receive. meaning no problem of conductivity. The reactor spread much slowly when it doesn't have 4°C difference x25, not enough for full throughput. But here you're giving lots of time to prepare before you ask for the max load.

IF you where to suddenly ask for full load, there would be a very short period of time where this 540° heat exchanger would function thanks to the buffered heat that spread during the previous stabilization. When it starts to draw power again instead of dipping a lot under 540, it would dip to maybe 501 ( as you said in your example under full load).
but for the time it takes to go to 540° to 501° you would have the impact of the refuel already happening.
mrvn wrote:
Sun Oct 24, 2021 11:58 pm
For this case where you count trains, and therefore steam, you can maintain the temperature. So instead of running the reactor at 600°C at full power you can run it at 700°.

So worst case, if you throw in fuel and stop using steam at the same time, your reactor should go to 950°C while the fuel cell burns and then cool down to 915°C in the long run.

Note: all numbers made up just to illustrate it. Measure it or compute it if you want the real numbers for your exact design.[/b]
I butchered your quote to keep what i agree :D

Having a thermal equilibrium at full load with an offset of almost a fuel cycle worth of temperature towards the higher temperature compared to what's the minimum required to function in all situation.

say given heatpipes lengh you need at least average temperature of 550° with 501 for coldest point and 600° for reactor in other design, this one is meant to do with 601° for the coldest point and 700° for the reactor. ( made up number).

True for reactor goes to almost the max possible and then cool down to the maximum temperature it has when the global maximum temperature the system can reach is perfectly spread accross all the system.( minus 1.000000001° or so per heat pipe/distance ).

Ideally the reactor would run at say 800° when the coldest point is 750° at the coldest moment of time. Then average to say 790° and 775°. if you wait a lot at 1 steam left before refuel.

And say 900° when the coldest point is 850°. Then average at 890° and 875°. If you wait a lot at 1 steam produced after refuel

For this the thermal buffer need to be even more gigantic than it is already :D

mrvn wrote:
Sun Oct 24, 2021 11:58 pm
So 670°C to 980°C. Less than I expected with the 1-fuel-cycle-buffer estimate, more than I would expect from the 2-fuel cycle-buffer you have. Or maybe I calculated the heat capacity of the reactors and heat pipes wrong.
[...]
Only the top station is used? Ouch. How does that happen? The trains waiting at signals are supposed to pass fifo with the one waiting the longest leaving first. So in a perfect world each station should be used in turn.
[...]
I would add a circuit condition to the trains schedule and have them leave round-robin so all stations get used equally. For example you can make a belt loop across all stations and throw a fish on it. At each station make the belt stop if a train is present and the train leave if a fish is present on the tile before that. So the fish arrives, the train leaves, the fish goes to the next stop. Simple and no combinator needed.
I don't know you said yourself it's more complex than the simplified math haha

those 3 points are linked together i think.

It happens when i try to simulate problems. Or when they happen alone. On the save uploaded, if you remove and replace the reactor to get rid of some energy. Then some train may not receive the precise amount of steam that triggers their departure from the steam loading area because i set them to the the risky condition of perfect fluid count and not superior or equal to. Then those train fill up to 100K steam, and stay there never moving, blocking the bays. ( it also happen if you or someone else manually drive and park in this spot or if you send a train with locomotive firsts by mistake and so many reasons x).

The particular heat dynamic of this system may explain the decrepencies between estimations and what is measured :
heatflows.png
heatflows.png (605.74 KiB) Viewed 4323 times
Consider the system being inactive for 10000 hours stuck at half-way throught the refuel. Then do for few cycles in a row a sabotage and block certains bays to only allow trains where the green rectangle are.

The red circle will be the hottest point, the blue circle the coldest overtime, creating the dynamic of heat symbolized by the arrow. ( before reaching equilibrium).

With the situation C where i measured the higher difference between the hottest and coldest point.

Thing is if you block some bay, you mathematically increase the amount of heat that will spread toward the bays that are left open.

You even have some parts of the heatpipes that gives heat back to the reactor, some heat pipes could be 100 150° more than the reactor core, EVEN WHEN THE REACTOR IS MIDWAY TO BURNING THE CELL. ( situation like the C for example, the reactor would be at 750° while the hottest point could be like 880° with made up number, but approximations to convey the trend i observed and roughly the magnitude.)
mrvn wrote:
Sun Oct 24, 2021 11:58 pm
What's the 197 760 number exactly? Is that when the fraction of steam left over after 12 trains fills one extra train? Or is that when the error has accumulated to a full fuel cycle? If the later you could add or skip a train every 16480 trains for 1/12th the impact.
I explained in the other post hehe.

Each train would require 5 more steam than 82 395 to make 988 800 steam every 12 train. so there's 60 steam too many each fuel cycle that are not carried away as steam but instead stay as heat.

This means every 197 760 trains, there is exactly 197 760x5= 988 800 steam too many. but instead of steam it's heat.

The system has overheaten during so many cycle that it has now the equivalent of 1 full fuel cycle too many.

well then skip the usual refuel every 950 hours of full production or so :).

You don't have to keep the mechanism for safety you can waste 4 fuel in 950 hours and let it overheat. If you play less than 950 hours the mechanism will not have time to trigger anyway.
mrvn wrote:
Sun Oct 24, 2021 11:58 pm
I would have thought you would use train full as condition. Now it makes sense that you get 12 trains per fuel cycle almost exactly.

With == 82395 I would be afraid it's anything between 82395 and 82396 exclusive. Should always be the same error per train but something you can quite see by measuring with the circuit network. After 82395+ trains you might be short one train full of steam.
Again something you can't easily test, even at 64x speed that's a long time.
i eplained in the other post i tried measuring the exact of amount of steam from tick 1 buffer of pump 4800, then tick 2 buffer of exchanger 2400, then 12 exchangerx103/60 = 20.6 steam per tick.

This method of calcul predict 7406 as a number of fluid without rounding supposedly. which i have found in game. Then i use openoffice to compute the list of value for all the ticks up to enough for 100K steam. At first the value match exactly, ( every 5 ticks the 0.6 becomes 3 and the decimal disappear).

Then i tested for values around 40K, and it didn't match, the difference was like 11 steam. I didn't spent too much time trying to identify when the divergence started, instead i used measurement from the game.
(ex : (40572 -7200)/20.6 = 1620 ). if i ask a train 40572 fluid, it should get it in 1620 ticks. instead the value would be like 40562 and then 40582 or 40583. ( +20 or +21 ).

my predicted amount of fluid shouldn't have given me 82395 : [(82395-7200)/ 12(103/60)] should be the number of tick required and be an integer. So instead of counting tickwise the amount of time required, i used the numbers the game gave me.

I consistently get 82395 steam == from game perspective. Which to me is count perfect. You could try taking a full train on the save game and check for yourself if there 82 395 or 82 395.3 for example. 1000 cycle, is 12 000 trains only, and that is 55 hours of game time. assuming refuel every 200 sec, which is not happening due to train downtime.

If you have a more precise method to measure steam, then i could use it to compute more precisely the amout of tick the train need to stay at the station. that's easy enough to make a tick-perfect loop triggering when a train enters a station and trigger a signal for him to leave.
mrvn wrote:
Sun Oct 24, 2021 11:58 pm
Did you use a waterfill mod to make a channel through the island or was that natural?
seriously read the other post x). I explained it's a ribbonlab map, and i decorated using the editor after things were build, you know during the time it takes for testing a bit at x64 speed. but given the amount of train my computer probably doesn't reach a true x64 ups x).

mrvn
Smart Inserter
Smart Inserter
Posts: 5682
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mrvn »

mmmPI wrote:
Mon Oct 25, 2021 7:49 am
mrvn wrote:
Sun Oct 24, 2021 11:58 pm
But the heat is not in equilibrium. Heat still bleeds out of the reactor into the heat pipes until the furthest heat exchanger is maybe 540°C and the reactor 565°. A 1°C gradient cross the heat pipes.

Your reactor is 35°C below the temp needed for full steam production once demand for steam returns.
i understand i think the situation you describe, but i disagree with the intermediate conclusion. If at 1 steam left in the system you stop using steam. You will have overtime a thermal stability like you describe, where the lowest global average temperature overtime, would also happen to be spread as perfectly evenly as it could across the whole reactor for an indefinite amount of time. ( minus the strict minimum required for heat to convey 1.00000000000001° or something like that per heat pipe.)

It's not 35°C below the temp needed for full steam production. The reactor is "too cold" to transmit the heat as you think, but the heat is already moved where it needs to be.
This stabilized equilibrium means the usual colder part are hotter than when running, and the hottest part usually when running, instead had time to give away their heat ( like the reactor is exceptionnaly cold).

In normal operation you need 4°C to transmit in your made up numbers up so if 25 heat pipes distance to the furthest exchanger you need at least 100° difference between reactor assumed hottest point, and the lowest temperature point ,assumed to be the furthest exchanger, This required for the later to have enough energy/heat throughput to do max load.

But in case you stabilized your temperature at the lowest moment. You think it's the reactor that is too cold to transmit, while in fact we can see it is the heat exchanger that is too hot to receive. meaning no problem of conductivity. The reactor spread much slowly when it doesn't have 4°C difference x25, not enough for full throughput. But here you're giving lots of time to prepare before you ask for the max load.

IF you where to suddenly ask for full load, there would be a very short period of time where this 540° heat exchanger would function thanks to the buffered heat that spread during the previous stabilization. When it starts to draw power again instead of dipping a lot under 540, it would dip to maybe 501 ( as you said in your example under full load).
but for the time it takes to go to 540° to 501° you would have the impact of the refuel already happening.
You might have something there. In a more traditional reactor the heat exchangers would drop to 501°C with the reactor cooled down before the detection system sees a lack of steam or power. So the heat that was spread out is lost before the refuel happens.

With everything being well above the low temp you still get full steam out of the heat exchangers and every bit of energy that isn't transmitted fast enough just heats up the reactor that much faster.
heat-distribution.png
heat-distribution.png (704 Bytes) Viewed 4318 times
The heat distribution might look like this with distance from the reactor increasing to the right. At standstill, top, the slope is shallow. At full throttle, bottom, the slope is steep. But if you remove just as much steam as you add energy by burning the fuel cell then the total heat stored in the system must remain constant. So the red area must remain the same.

I'm still thinking too much with the traditional setups. There the top picture would have the lowest point touch the white line (representing 500°C). And then to get to the bottom you have to add heat back to the system.

One thing I can see breaking this is removing steam unevenly. Like only in the top train stop. Then heat might go into the bottom heat pipe while the top keeps dropping out of proportion. As you later tried to show. The heat pipes give back the energy but the distance is more than twice . So a larger temperature range is needed and you only have so much temp to play with. I would add some logic to make all bays used round-robin just to avoid the danger.
mmmPI wrote:
Mon Oct 25, 2021 7:49 am
mrvn wrote:
Sun Oct 24, 2021 11:58 pm
What's the 197 760 number exactly? Is that when the fraction of steam left over after 12 trains fills one extra train? Or is that when the error has accumulated to a full fuel cycle? If the later you could add or skip a train every 16480 trains for 1/12th the impact.
I explained in the other post hehe.

Each train would require 5 more steam than 82 395 to make 988 800 steam every 12 train. so there's 60 steam too many each fuel cycle that are not carried away as steam but instead stay as heat.

This means every 197 760 trains, there is exactly 197 760x5= 988 800 steam too many. but instead of steam it's heat.

The system has overheaten during so many cycle that it has now the equivalent of 1 full fuel cycle too many.

well then skip the usual refuel every 950 hours of full production or so :).

You don't have to keep the mechanism for safety you can waste 4 fuel in 950 hours and let it overheat. If you play less than 950 hours the mechanism will not have time to trigger anyway.
Sounds like more of a danger. You left the 5 extra steam as a safety buffer so the reactor never cools down. But then you remove it all at ones. If you were just a little off on the measurement, and you only measured with an accuracy of 1 unit, then the reactor will drift down there. You remove 988 800 steam when you might only have 197 760x4.5 left in the system as heat.

And then the reactor would be dead unless you have a "time passed" or "inactivity" condition in the train schedule. Removing that would certainly be safer at the cost of "waste 4 fuel in 950 hours".
mmmPI wrote:
Mon Oct 25, 2021 7:49 am
mrvn wrote:
Sun Oct 24, 2021 11:58 pm
I would have thought you would use train full as condition. Now it makes sense that you get 12 trains per fuel cycle almost exactly.

With == 82395 I would be afraid it's anything between 82395 and 82396 exclusive. Should always be the same error per train but something you can quite see by measuring with the circuit network. After 82395+ trains you might be short one train full of steam.
Again something you can't easily test, even at 64x speed that's a long time.
i eplained in the other post i tried measuring the exact of amount of steam from tick 1 buffer of pump 4800, then tick 2 buffer of exchanger 2400, then 12 exchangerx103/60 = 20.6 steam per tick.

This method of calcul predict 7406 as a number of fluid without rounding supposedly. which i have found in game. Then i use openoffice to compute the list of value for all the ticks up to enough for 100K steam. At first the value match exactly, ( every 5 ticks the 0.6 becomes 3 and the decimal disappear).

Then i tested for values around 40K, and it didn't match, the difference was like 11 steam. I didn't spent too much time trying to identify when the divergence started, instead i used measurement from the game.
(ex : (40572 -7200)/20.6 = 1620 ). if i ask a train 40572 fluid, it should get it in 1620 ticks. instead the value would be like 40562 and then 40582 or 40583. ( +20 or +21 ).

my predicted amount of fluid shouldn't have given me 82395 : [(82395-7200)/ 12(103/60)] should be the number of tick required and be an integer. So instead of counting tickwise the amount of time required, i used the numbers the game gave me.

I consistently get 82395 steam == from game perspective. Which to me is count perfect. You could try taking a full train on the save game and check for yourself if there 82 395 or 82 395.3 for example. 1000 cycle, is 12 000 trains only, and that is 55 hours of game time. assuming refuel every 200 sec, which is not happening due to train downtime.

If you have a more precise method to measure steam, then i could use it to compute more precisely the amout of tick the train need to stay at the station. that's easy enough to make a tick-perfect loop triggering when a train enters a station and trigger a signal for him to leave.
I think your math is right for an empty fluid wagon. But when the wagon fills up there is back pressure and the pumps slow down. You can also see odd timing when loading a fluid wagon with 1, 2 or 3 pumps from tanks. You would expect 2 pumps to be twice and fast and 3 pumps three times as fast. But 3 pumps is only around double the speed. Have you tried filling just one train and looking at the production statistics? Can't try at the moment but I bet the production of steam jumps to 103 * 12 when the train stops but then falls off towards the end when the fluid wagons are nearly full.

The steam produced by the heat exchanger might also be off. 103 units per second is 1.716666 units per tick. Certainly not a nice round number. It could be 1.72 steam per tick and the game would never show you. The prototype data and some math should though.

Have you tried filling 10 or 100 trains, emptying them into a big array of tanks and subtracting 82395 * 10 (* 100) from it to see any fractions? That's the only thing I can think of to measure more accurately. Or has someone decoded the savegame format so we can look at the raw data directly?

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

mrvn wrote:
Mon Oct 25, 2021 9:10 am
heat-distribution.png
The heat distribution might look like this with distance from the reactor increasing to the right. At standstill, top, the slope is shallow. At full throttle, bottom, the slope is steep. But if you remove just as much steam as you add energy by burning the fuel cell then the total heat stored in the system must remain constant. So the red area must remain the same.
I'm still thinking too much with the traditional setups. There the top picture would have the lowest point touch the white line (representing 500°C). And then to get to the bottom you have to add heat back to the system.
that's a nice depiction. Ideally you could make it so that even in the bottom picture there is some red above the white line on the right side. move the whole red area towards the upper °C by adding more heat overall in the machine at initialization to make it safer.

The case only 1 bay is used puts a hard cap on total heat production, this means the heat is taken away much much slower (1/4) and not causing trouble.

The case only 2 bay on the top are used, still cap the total heat production to 1/2, which means the heat given back from the lower branch even if further away, seemed sufficient, but it made me think about it twice when i saw 750° or so in the core when burning fuel, because at full load test earlier i looked at the temperature that was not going under 800° before the refuel, i thought it was broken. Then realised the amount of heat/Energy was there, but on the lower branch at 850° or so. The reactor was still receiving heat from the lower branch , the temperature then caught up with 850° as the fuel burnt but during this time the newly generated heat in the core was only going toward the upper branch since the lower branch were hotter than the reactor already.

i'd like to avoid adding more complex mechanism like round robin train, i'd rather remove some like the 197 760 train counter, making it simpler and safer which 90% of the time the answer is "more buffer", or "more energy given at initialization" for those x). If i was to use this system for myself on a real game i would take less steam per train and let the thing overheat no problemo, most of the time i'm so slow i have hundreds if not thousands of fuel cell to many when i finished building the nuclear plant x).
mrvn wrote:
Mon Oct 25, 2021 9:10 am
I think your math is right for an empty fluid wagon. But when the wagon fills up there is back pressure and the pumps slow down.

The steam produced by the heat exchanger might also be off. 103 units per second is 1.716666 units per tick. Certainly not a nice round number. It could be 1.72 steam per tick and the game would never show you. The prototype data and some math should though.

Have you tried filling 10 or 100 trains, emptying them into a big array of tanks and subtracting 82395 * 10 (* 100) from it to see any fractions? That's the only thing I can think of to measure more accurately. Or has someone decoded the savegame format so we can look at the raw data directly?
back pressure ? each pump as only 1.71666666 fluid per tick to pump in a wagon that will not be more than 83% filled up. If that's the case maybe using 24 smaller train would help filling steam before it starts to impact math.

but 1.72 ? no i'm just saying that i have 82 395 fluid in my trains consistently right ? 82 395, in 4 wagons ! this means the game tells me i have 20 598.75 fluid per wagon no ?
and this happens everytime! why i had not thought about this earlier.

I still can't explain how the games give me this number but that should be enough for count perfect no ?
otherwise i'd need to empty 1000 wagons to see if there's 20 598.751 steam ?

3 pump/exchanger per wagon. That means (103/60)*3 is the amount of fluid per tick. 5.149999999999999999. but if you take 5.15 for example, and try the math :
{[(20 598.75-[3x(400+200)]/5.15}+2 for how many ticks does the train need to be filled up, you don't get an integer number of tick, which is wrong.

mrvn
Smart Inserter
Smart Inserter
Posts: 5682
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mrvn »

I'm not surprised the number is always exactly the same. The fluid wagons always start at 0 and the heat exchangers + pumps at 600 and the heat exchangers have enough heat for full production. At each tick after the train arrives the fluid level will always be exactly the same.

Each pump should transfer 600 + 1.71666666 * T steam. To get to 20 598.75 fluid takes 3650+ ticks. You have 3 pumps filling the train and it might cut of mid tick with one or two pumps filling the fluid wagon and then the third getting shut of by the train condition. I would doubt that but it's possible. Lets do the math for the whole 4 wagon train:

; (3 * 600 + 1.7166666666666 * (3 * 3650 + 0)) * 4
82389.99999999708
; (3 * 600 + 1.7166666666666 * (3 * 3650 + 1)) * 4
82396.8666666637464
; (3 * 600 + 1.7166666666666 * (3 * 3650 + 2)) * 4
82403.7333333304128
; (3 * 600 + 1.7166666666666 * (3 * 3650 + 3)) * 4
82410.5999999970792

Fluid numbers are rounded down so with one pump working an extra tick it should be 82396 fluids in the train, not 82395. Where did that one fluid get lost?

Looking at the pump's tooltip while filling the train I see it has 1.7/400 steam. That's the amount of steam generated per tick. So it's not hiding 1/3 fluid per pump there.

I think it might be those 6.7 steam left in the heat exchanger on the first tick the pump works. Maybe the heat exchangers aren't doing exactly 103 steam/s on the second tick but 102.666666666. That would account for 1 fluid with 3 heat exchangers.

Was that the discrepancy you had between your math and the game too?

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

mrvn wrote:
Mon Oct 25, 2021 5:24 pm
Maybe the heat exchangers aren't doing exactly 103 steam/s
Was that the discrepancy you had between your math and the game too?
my very elaborate testing shows that exactly 100 000 ticks after i put the pipe i have 171 811 steam read by the combinator.
This means a heat exchanger produce more than 103.08 /sec (lower bound) because it takes time for water to flow from pump to pipe and then to the heat exchanger and for the combinator to update the quantity.

in other word, the power plant is still overheating a bit. it's probably the game making sure the rounding don't screw you up by removing little portion of fluid here and there.

i'm not quite sure of the appropriate english term, i think the game just calculate with more digits at least 2 and we can't see those. that's why sometimes it goes 1.7+1.7=3.5 because that's 1.79+1.79 for example but we can't see the 0.09, it's not "rounded" or truncated, it's hidden but still there.

Given that it's steam and vanilla factorio this doesn't open possibility for exploiting a feedback loop.

Also you can stop being afraid of the == 82395 ? :D
labtileisforlabbing.png
labtileisforlabbing.png (258.41 KiB) Viewed 4279 times

mrvn
Smart Inserter
Smart Inserter
Posts: 5682
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mrvn »

Fluids are all computed as doubles and then the circuit network used int(x) to create the signals. So it always rounds down but internally it has 52 bit accuracy.

So 103.08 fluids/s. I guess it's time to look at the prototype and calculate the exact figure and work with that.

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

mrvn wrote:
Mon Oct 25, 2021 5:24 pm
Each pump should transfer 600 + 1.71666666 * T steam. To get to 20 598.75 fluid takes 3650+ ticks.
Fluid numbers are rounded down so with one pump working an extra tick it should be 82396 fluids in the train, not 82395. Where did that one fluid get lost?
well i measured it more precisely, on the map that is available, it clock at 3648 ticks from the first tick steam is in the wagon to the tick the train's conditions of == 82395 triggers.

so there is no fluid that get lost, you just assumed it was to be 3650+ and thought that was linked with the internal rounding down.
mrvn wrote:
Mon Oct 25, 2021 11:20 pm
So 103.08 fluids/s. I guess it's time to look at the prototype and calculate the exact figure and work with that.
Well yes otherwise it will be impossible to make sure this power plant function or if the logic is flawed and it is wasting a fuel cell every 1000 hours . It will also allow to measure how much efficiency is gained when you have a complicated mechanism that detect overheating and cooling, versus just counting 12 trains with 82395 steam to prevent wasting this fuel cell.

gGeorg
Filter Inserter
Filter Inserter
Posts: 387
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by gGeorg »

mmmPI wrote:
Mon Oct 25, 2021 8:51 pm
my very elaborate testing shows that exactly 100 000 ticks after i put the pipe i have 171 811 steam read by the combinator.
This means a heat exchanger produce more than 103.08 /sec (lower bound) because it takes time for water to flow from pump to pipe and then to the heat exchanger and for the combinator to update the quantity.
Rounding and huge numbers can be a headache. I just found that my attempts (Perfect Cloverleaf v2.0) to use time as condition for fuel cell reload has limit (probably) due to rounding. Idea is, no feedback from Load-unload inserters, only clock to reach seamless feeding. Cell is told to last 200s which translates into 12 000 tics. However, when you make it so, that you insert the next cell EXACTLY on 12 000th tick then it doesn't work.
1. when you left one tick of "cold reactor" where it announce "not fuel" it works with 12 000+1 period indefinitely. No errors.
2. when you insert the new cell exactly on the tick12 000 (e.g. re-fuel period is one tick shorter than previous ), so it should work seamless. Then unexpected thing happens, it creates one "bonus" tick. So cell suddenly burns for 12 001 ticks. In few cell cycles you see that you system is not synced but inserts new cell sooner, not on time. Longer the system works, bigger the mistake grows, as it gets one "bonus" tick per fuel cell cycle.

As result, there have to be one tick of cold interval to reset the rounding error.
So for your measuremnt of exact steam, you might find out if the "bonus" tick realy gives some power on top if you load more cell at once. Or simply make sure you use the discreet loading, one cell at a time with guaranteed cold interval between.

mrvn
Smart Inserter
Smart Inserter
Posts: 5682
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mrvn »

mmmPI wrote:
Tue Oct 26, 2021 10:43 am
mrvn wrote:
Mon Oct 25, 2021 11:20 pm
So 103.08 fluids/s. I guess it's time to look at the prototype and calculate the exact figure and work with that.
Well yes otherwise it will be impossible to make sure this power plant function or if the logic is flawed and it is wasting a fuel cell every 1000 hours . It will also allow to measure how much efficiency is gained when you have a complicated mechanism that detect overheating and cooling, versus just counting 12 trains with 82395 steam to prevent wasting this fuel cell.
Practically I don't care about a wasted fuel cell every 1000 hours or somesuch. I'm more concerned about working with an assumption from the GUI output that turns out to be wrong and screwing up after 10 hours.

The heat exchanger example could have been 103.99999 steam/s causing a far larger error than the ~103.08 steam/s. I keep assuming people would choose some rounds numbers but factorio is full of things that have 1/3 item per tick or other non-round numbers. They started of with nice integers and then changes made the numbers bad. Or the energy per fluid and conversion rates are nice round numbers but the combination of them is an ugly fraction leading to non-integer values for steam/s.

And if you are going to compute the fuel requirements for 431254 trains and correcting for those ~5 steam/s left over in every fuel cycle then you better do it right or not at all. :)

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

mrvn wrote:
Tue Oct 26, 2021 2:48 pm
Practically I don't care about a wasted fuel cell every 1000 hours or somesuch. I'm more concerned about working with an assumption from the GUI output that turns out to be wrong and screwing up after 10 hours.

The heat exchanger example could have been 103.99999 steam/s causing a far larger error than the ~103.08 steam/s. I keep assuming people would choose some rounds numbers but factorio is full of things that have 1/3 item per tick or other non-round numbers. They started of with nice integers and then changes made the numbers bad. Or the energy per fluid and conversion rates are nice round numbers but the combination of them is an ugly fraction leading to non-integer values for steam/s.

And if you are going to compute the fuel requirements for 431254 trains and correcting for those ~5 steam/s left over in every fuel cycle then you better do it right or not at all. :)
it's ok it's 10 hours of fun, and some more to find out what happened in case x)

It's a game for fun, they made the rounding down look like there is more at the end, you can persist calling it a round down in terms of programming, in terms of gameplay that's a round up it feels precisely to avoid the case you mentionned earlier of people getting screwed over by 102.99999 instead we got 103.00001, given some (rare) circumstances it can happen that it has a an impact and when it is it's to give you free things!

you are messing up numbers, there is 5 steam left after each train, 60 after each fuel cycle because a fuel cycle is composed of 12 trains. 1 fuel cycle representing 988 800 steam, you need to wait 197 760 trains for the first corrective refuel skip.

Every such of this train may be carrying a little too much steam, but less than 1. in order for the rounding to require another fuel skip it would need to be bound on the other side.
As such the thing is overheating due to unquantifiable bonus, but is each train having 0.24 excess or 0.000000000000000001 per wagon ?

Let's take something worse than the worst possible case, let say the train has 82 396 steam instead of 82 395, then every 82 395 train the system is in fact in a state where it would be if it didn't need correction and there was 82 396 train that passed, so i need to count 1 excess train. But 1 train only represent 1/12 of a refuel, so if i wanted to wait to correct since i don't need to do it by counting an additionnal train. I could just wait till the correction could be applied on a refuel.

In this worst limit case for the rounding making trains carry too much steam to cascade up to the point where it would represent a full refuel missing in the buffer, it would be 988 800 train. since 1 train can carry away at most 1 uncounted steam and a refuel is worth 988 800 steam.

988 800 is a big number that look scary but it's constructed thanks to many nice round number, for example it's 197 760 x5 or also 515x32x12x5, which are also 103x32x25x12 but the one with 515 i already have all the loop-belt built except for 5 which is easy it's a straight blue belt. the corrective wouldn't be too difficult to make, the computation as you say are very very easy since it's all numbers that i had already.

you say each train has 1 steam too many possibly, maybe nothing, but at the same time you ok with wasting a fuel cell in 1000 hours. here we talking 988 800 trains, with 12 train every fuel cycle of minimum 200 second. that means a train every 16 second, if you wait for almost a million you will need around 4394 hours.

In the worst case, in 4394 hours, if the rounding was the worst possible for me everytime it could represent a full refuel. But given how much above 103 seem to be producing the heat exchanger ( not the 0.08 measured in another setup but based on the 3648 tick need to fill in trains) then it's not even true. Given the uncertainties that are quantified and those that are bounded it's easy to neglect them. It doesn't mean the computation are incorrect, just that i use my brain also when applying the conclusion, i could make the anti-feeding function only 4 times out of 5 for safety ? rather getting rid of it entirely and only keep 2 loop, the fix is pretty simple and elegant.

431254 ? never seen that guy, you must be mistaken or making math error :) i did the computation right when i built the plant i think .

gGeorg wrote:
Tue Oct 26, 2021 1:53 pm
As result, there have to be one tick of cold interval to reset the rounding error.
So for your measuremnt of exact steam, you might find out if the "bonus" tick realy gives some power on top if you load more cell at once. Or simply make sure you use the discreet loading, one cell at a time with guaranteed cold interval between.
given the mechanism it is possible even though rare that 2 fuel could be in the reactor at the same time, if several outpost stations opens just after a refuel, 3 trains will go there right away. If power consumption continue to be high, ( or if several buffer in outpost are depleted at the same time and need refill), the steam request could spike and create a max load situation, where the 3 trains launched just after refuel would be "delayed load" triggering a second refuel 3/4 of the previous one. ( 3 train leaving with steam before the heat is fully added / 12 that passed triggering the 2nd refuel).

This situation however is not problematic, it would create 12000 +"1 tick of heat for free" that would just increase the heat buffer. That heat could be wasted as the system ignore it is there but otherwise wouldn't shift away calculation in a problematic way.

( not as bad as when i cancel a train loading with only 50% steam loaded, and the system think 82K steam left because one train left, so it think the system is getting cooler than it really is. that's a big difference 40K steam, represent more than 1 tick of heat and this kind of waste happens often when i want to measure things. that is just wasted heat potentially system reaching 999° because if i cancel 12 trains with only 10 steam, the power plant will refuel, 12 train is 12 train x) , it's wasteful but not creating risk.)

mrvn
Smart Inserter
Smart Inserter
Posts: 5682
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mrvn »

gGeorg wrote:
Tue Oct 26, 2021 1:53 pm
As result, there have to be one tick of cold interval to reset the rounding error.
So for your measuremnt of exact steam, you might find out if the "bonus" tick realy gives some power on top if you load more cell at once. Or simply make sure you use the discreet loading, one cell at a time with guaranteed cold interval between.
I believe a fuel cell doesn't burn for exactly 200s either. Iirc it's some number of ticks and on the last tick there is only a fraction of a full burn left.

And if you used 200s that's an error already. 103 steam/s instead of 103.08 steam/s another error. Train having a fraction more steam than shown another error. It all adds up and may even multiplies.

Overall I stand by my point: If you go to the trouble of correcting for a miniscule fraction of steam left per train and correct for it by adding a train or removing a train, adding a fuel cell or delaying refueling or whatever correction you do then do the math right or not bother at all. If you work it all out and then say: I only adding a fuel cell every 4534 cycles, not 4534.013. A belt clock for that last fraction would just be ridiculous. Then that is fine. Don't trust the GUI to give you accurate readings, we know it doesn't. Recently I saw how wrong the production graph is with fluids. If you want to use the GUI values then you can do all your calculations with error bounds and then you know what the minimum and maximum is.

Otherwise just eyeball it and at some point it's good enough, like ignoring the 5 steam per whatever that have no impact at all. Except where I feel eyeballing gets critical is when an error one way would put the reactor into a state where it stops. Like when you count surplus steam and overestimate then the reactor will cool down by the correcting factor. Cool it down enough and it freezes because trains stops leaving and triggering a refuel. Easy to fix too, just have trains leave on inactivity so the problem at least self corrects. When eyeballing I think a self correcting design is a must or seriously rounding in one direction greater than the error on the inputs.

For the reactor with train case my solution would have been to err on the cool side. Overfill the trains a bit and leave on inactivity. It wastes no fuel cells with overheating and self corrects any error in the math from estimations. Nothing will brownout or death spiral because a train has a few steam missing or leaves 2s late till the inactivity hits.

On the other hand that belt clock thing counting such huge train numbers was fun to see. I wouldn't use it for real but fun to see you do it.

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

mrvn wrote:
Wed Oct 27, 2021 1:23 am
And if you used 200s that's an error already. 103 steam/s instead of 103.08 steam/s another error. Train having a fraction more steam than shown another error. It all adds up and may even multiplies.
clever analogy, 1x0.5X0.50.X5, that's how the thing multiply.
Also you can have things like 200 +/- 30 +/- 1 +/- 0.0003. Then you like ok i will consider 168 as the minimum for safety, and 232 as the maximum. And now someone claims, oh but there's also a -0.000000004 somewhere, oh but it doesn't matter, it's already inside the bound of that the system is designed for so it doesn't cause problem.

you just base you argument on feelings " it may even multiply" , really ? how's that it may ? may or may not ? well 50/50 pick your side don't need to even verify, math or whatever, it's like oh no i don't feel it, therefore here are my impressions that keep me from willing to accept facts, the power plant would have shown critical failure, or even minimal trouble, that would have been a good way to learn things, why it failed how to do better ? but for this one you can't tell how much it fail because it's so infinitesimal that it would require either 1) too much time even at 64 speed for anyone to be able to notice, yet alone have an impact or 2) looking at the prototype to make sure there is something wrong.
mrvn wrote:
Wed Oct 27, 2021 1:23 am
Cool it down enough and it freezes because trains stops leaving and triggering a refuel. Easy to fix too, just have trains leave on inactivity so the problem at least self corrects.
you don't seem to understand math, if there was 0.1% overheating predicted from math, i'm not gonna be afraid because you tell me now there is 0.01% overcooling that i didn't taken into account when i know when doing the math that 1% overheating or cooling is not a problem.

If you only take == 82395, maybe you have 82396, if it's the case it doesnt matter because you would still be good for the next 4000 hours that is with 82396 which is impossible. there's only you telling me it's not 82395.000000000000000000001, but feel free to look at the prototype and give me real numbers computed tick by tick instead of "it may even multiplies" when i just did the math to try and explain you it's not going to.

mrvn
Smart Inserter
Smart Inserter
Posts: 5682
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mrvn »

Except you didn't explain anything, you just claimed it to be so. At least if you did the math with margins of errors you never showed it. But calling me stupid will certainly convince me. EOD

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

I made a red box, and written in big on it "not necessery", because the math without safety margin would require taking away 82400 steam 12times or 98 880 10times to make 988 800.

it's more elegant to me to to take 12x82 395 given that the game consistently respond with this number. not 82 397 or 82 391. This means the system will overestimate by a very very tiny margin the amount of energy being consumed. Since it is made to consider 82400 steam is lost and need to be replenish every train. ( 12 time => refuel).

If you want to reduce that safety margin to be even more accurate in order to save the amout of fuel that is not taken in account and potentially lost, then you can add a correction mechanism whose order of magnitude is 5 steam per train or 1 refuel every 197 760 trains to make it count perfect in theory.

But then again you're left with a situation where the rounding matters. so instead you could have this correction mechanism only be 80% active, triggering something that would be like the "anti-anti-feeding", to cancel 20% of the action of the correcting mechanism that is used to save 4 fuel cell ( 1 refuel ) every 960 hours. this is why it would matter only over 4000 or so hour.

now if you take 82 395 +/1 that's still good because 82 400 is the number which cannot be 82400 +.

especially when measuring 1 heat exchanger's output shows in practice more than the theoric production that was used for math, and that train fill in faster that theoric expectation validating the fact that heat exchanger seem to produce more than theoric value used to compute.

Also that fuel cells seem to potentially produce more energy than expected in some situation 1 tick of free heat is offered.

viewtopic.php?f=208&t=100376 i liked this post already because there are more explanations about that particular thing.

The amount of explanations required seems to be trending to infinite, or absurdly high to the point where i'm suspecting you again to be dishonnest if not your own word.

mrvn
Smart Inserter
Smart Inserter
Posts: 5682
Joined: Mon Sep 05, 2016 9:10 am
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mrvn »

Your still not getting it. Your correction works at an accuracy that exceeds the error of your measurements. At least those made initially. You are playing with the safety margins and we don't know what way it will go. Cool down or still overhead? Before it we did know. So the correction is actually making the design unstable, probably, maybe. Not saving the last bit of wasted energy.

So again you go the wrong way. I don't want you to go more accurate, go less accurate. Stay outside the margin of error so the design has a well defined behavior.

And yes, you might be within the margin of error now with the revised measurements now that you saw heat exchangers produce 103.08 +-0.01 and so on. That's not where you started.

Image

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

mrvn wrote:
Wed Oct 27, 2021 11:22 am
So the correction is actually making the design unstable, probably, maybe. Not saving the last bit of wasted energy.

So again you go the wrong way. I don't want you to go more accurate, go less accurate. Stay outside the margin of error so the design has a well defined behavior.

And yes, you might be within the margin of error now with the revised measurements now that you saw heat exchangers produce 103.08 +-0.01 and so on. That's not where you started.
the correction that make the design unstable you mean the thing in the red box called "not necessary" ? you mean it transform a design that is 0.06% overheating into a system that's 0.0002% unknown direction unbalanced ? and you are mad about it ? pal that's why it's in the red box called not necessary in the first place.

oh yeah ? i didn't started with 82395 instead of 82400 to make sure i was right from the start and then approched the roudings by under, up to a precision where it's so spot on we can't tell which way it balances ? and make it so that's it's super easy to choose or the other ?

nice picture , that's how i feel too you obtus nit-picky dishonnest person

User avatar
xaetral
Inserter
Inserter
Posts: 42
Joined: Sun Apr 28, 2019 2:25 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by xaetral »

mmmPI wrote:
Wed Oct 27, 2021 11:04 am
[...] heat exchanger seem to produce more than theoric value used to compute.
Yeah they don't produce 103 steam per second, but rather 10/0.097 or approximately 103.0927835 steam per second.
That's not an issue tho because it's a rational number, meaning you can just use an error dithering circuit:

Let's assume you get a tank signal each time you produce exactly 25400 steam (I'm using setup n°3 as an example) and also let's assume you have a single reactor in your power plant for sake of simplicity.
That means that every fuel cell will produce 8000/0.097 steam units.
Now we just need to put a fuel cell every (8000/0.097)/25400 times the tank signal ticks, which is also 8000/2463.8 or 80000/24638.
Since we have a rationnal expression we can now reduce it by dividing both parts by their GCD which is this case is only 2, thus giving us 40000/12319.
The last step is to configure a simple up/down counter that adds 40k and trigger cell input each time the counter gets lower than 0 and substracts 12319 per tank signal, thus dithering the error to infinity.

You might want to compute the worst case instantaneous error if your energy storage is borderline but it's no big deal, at least the average error is 0.

mmmPI
Smart Inserter
Smart Inserter
Posts: 2674
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: All the different ways to increase the efficiency of a nuclear power plant

Post by mmmPI »

xaetral wrote:
Wed Oct 27, 2021 2:04 pm
Yeah they don't produce 103 steam per second, but rather 10/0.097 or approximately 103.0927835 steam per second.
You might want to compute the worst case instantaneous error if your energy storage is borderline but it's no big deal, at least the average error is 0.
I'm not familiar with the term error dithering circuit. but i understand i think what it is doing in your original circuit.

With your value i can compute : [(3648x12x(10/0.097)/60] +7200. and i find the number 82416,494845..... which i found when asking for >=82400

I can also compute {[3647x12(10/0.097)]/60}+7200. and i find the number 82395,876288.... Which tells precisely the innacurracies.

This means it takes 1 more tick of waiting for a train to stop emiting its train ID in a station after the conditions for departure is met and in my design trains load in 3647 ticks +1.

And also that [(2000/97)(x-1)+7200] is number of fluid trains carry where x is the number of ticks.

Or that with x = (97*y)+1, the equation becomes (2000/97){[(97*y)+1]-1}+7200 or . 2000y+7200 which is a whole lot easier to read. because now y is the amout of ticks trains would need to stay loading, for their quantity to make an integer.
( ofc in theory because in game the roundings would occur during intermediate processing).



It also means that the value 988 800 is not the correct amount of steam produced by 1 fuel cycle for a 2X2 plant, but it would rather be: (10/0.097)*48*200 = 989 690.722....

(assuming 200 sec to burn a fuel cell). So now we know 2 things , 1) train take too much, 2) trains take too few. Why ? because we know how many in excess compared to 82395 they take, but also that they should now take (989 690.722/12) steam, and not 988800/12.

To be precise each train should be carrying: ((10/0.097)*48*200)/12 steam. or 10000*48*200/12*97, or 8 000 000/97 which is 82 474,2260...

And they are carrying atm [(2000/97)(3648-1)] +7200, or (7294000/97)+(698400/97)= 7 992 400/97, which is 82395,876288.

So what happens when 12 train pass ? well then there is 12*0.876288 more steam than initial assumption taken away. 10.515

How much energy is left if it was steam? well substract 12 times the amount of steam a train carry to the newly adjusted total steam produced in a fuel cycle : (( (10/0.097)*48*200 )) or also (8 000 000 - 7 992 400)/97= 78,3505155

So when 12 train passes they take 10.5 more steam than expected, and there is still despite that 78 steam left in the tank which is (78,35-60)=18 or so more steam left at the end than expected.


you're just lucky the heat exchanger produce more than 103 , it still unprecise, the logic is flawed the error will accumulate toward infinity, due to the roundings also maybe some liquid is destroyed when the internal buffer of the pump maxing out, plus also pumps functions more often than expected so there is a need for more solar pannel to power them, and anyway a system like that is fragile, you can't use it on multiplayer, what if someone remove a rail ? or even in case of fuel shortage, the restart is very annoying, because you need to remove the whole power plant, and rebuilt it to make sure the temperature of initialization is known and not eyeballed to be enough otherwise it's not worth making some complicated math, also if you power the whole thing with solar pannel then you can totaly use more inserter for the fuel buffer because they are drain free , and what if someone start building some assembly next to the power plant , and draw on the accumulators powering the pumps, it's very unsafe, not mentionning the temperature being very often above 900°, plus there is no point making the correction mechanism if without it it's already good.

i think i got them all for the faq manual on how to use the weird railpower plant :)

Post Reply

Return to “Energy Production”