Perfect Nuclear Cloverleaf v3, Modular 1-4 cores book : 40-480MW, All the bells and whistles

Power Plants, Energy Storage and Reliable Energy Supply. All about efficient energy production. Turning parts of your factory off. Reliable and self-repairing energy.
gGeorg
Fast Inserter
Fast Inserter
Posts: 225
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Perfect Nuclear Cloverleaf v2

Post by gGeorg »

Based on discussion in other thread I was successful to create Perfect cloverleaf 2.0
main features:
- cold interval reduced to zero (fresh cell is inserted at the same tick as old is spent, all other designs include myself, have at least 17ticks delay )
- side effect of new mechanic of control - it autostarts
- based on discussion, I also added a predictable fuel buffer with Speaker to announce shortage
- it is even more compact 56x57 (previously 58x58) which means power density per tile is now : 151,3 kW/tile
- it has slightly improved fluids flow so it can really peak at 488,88 as long as steam reserve allows
- it works stand alone without any outside connection and also with overhelming requirement (can protect internal grid against outside if needed)
- in case you want start always all four cores at once (there might be situations where you need at least some power NOW,rather then wait for perfect efficiency at all cost) just change the fresh cell combinator from value 1 to value 4

It is a release version. However, before I make a book and update all the docs, I would welcome your review or even criticism.

**********************************
Attachments
The_Perfect_Clover_Leaf.txt
(81.98 KiB) Downloaded 77 times

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

Re: Perfect Nuclear Cloverleaf, Book of modular 1-4 cores : 40-480MW, Losseless, two power grids, all the bells and whis

Post by mrvn »

SoShootMe wrote: ↑
Fri Feb 19, 2021 4:14 am
foamy wrote: ↑
Thu Feb 18, 2021 8:52 pm
gGeorg wrote: ↑
Wed Feb 17, 2021 10:47 pm
2N design
- you need a massive lake which is very hard to find on the default maps, or you need mods to dig up terrain
- you will need tons of landfill
- you create one large fluid system in one processor thread
- wide design with lots of gaps means the power efficiency per tile is lower
- due to neighbour bonus you get 380% bonus which is only 27% higher than CloverLeaf.
CloverLeaf
- you can build nearly anywhere
- you need no landfill
- you can build it very cheap due to one core start up
- it fits to city block design
- each power plant can run in own processor thread
Hang on, what gaps are you talking about in a 2N design?
I think significant gaps are unavoidable with 2N designs where each tile contains two reactors. But more reactors per tile can reduce this.
foamy wrote: ↑
Thu Feb 18, 2021 8:52 pm
For that matter, how big a lake do you think you need? Sure, you need lots of landfill if you're doing it in a big lake, but all you really need is a lake that's twelve-to-fourteen tiles or so wide. That's pretty narrow.
I assume you're thinking of 2N designs with embedded offshore pumps near the reactors. Assuming no mod to dig up terrain, to be more accurate, what you are saying is that you need a lake that can contain a rectangle of size 5Nx12 or 5Nx14.

A 2N design only makes sense if N is large, and while I don't think it is particularly hard to find a suitable lake for a 2N design generating a few tens of GW with default map settings, such a lake will typically be much wider and you must landfill not only almost all the rectangle (leaving holes for the offshore pumps) but also a significant amount on one or both sides.

Personally (each to their own as always), I like to broadly fit the terrain, so I see "build nearly anywhere" and "no landfill" as significant benefits, and designs like this are of interest (thanks for sharing, gGeorg).
Actually not true. The most gain in a 2N reactor is for low N. So going from 2 reactors to 4 is a huge step. 4 to 6 is less, 6 to 8 still less. You don't need to go to N=20. But making a 2x4 reactor is certainly worth it.

As for the difficulty of finding a lake in the right shape to place the reactor in.... You don't need to actually make the 2x8 reactor produce 1120MW worth of steam, or 2.3 times the amount of water than your 2x2 design. As you mentioned there is a lot of thermal buffer in the reactors and heat pipes and you are using that. So keep the same number of turbines, same number of heat exchangers, same amount of water piped in from basically anywhere. BUT, use a 2x4 reactor grid. It will still only generate 480MW of power. But it will do it more efficiently. 16.666% more efficient actually. Use 2x6 and it's 22.222% better, 2x8 and it's 25% better. 2x20 and it's 27% (or was it 29%?) better. As you see the most gain is for the low N. But it would ruin the symetry.

That's also why I would never recommend using the 1 reactor version of this. Sure you build that first to get some power. But the material cost to go to the full 2x2 setup isn't that big and the difference is efficiency is major. 300% more efficient. Time to upgrade the plant asap, especially before covarex when sourcing fuel cells is a problem.


As for ideas to improve the design: Looks like you have space for a few extra steam turbines. While the reactor produces 480MW of power the power consumption usually fluctuates. By adding a few extra turbines you can produce more power for a short time and then make up the lost steam in times where you need less than 480MW. Obviously if you keep needing more than 480MW eventually the saved steam runs out and you only get 480MW. Thanks to the separate power grids the plant won't shut down or anything.

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

Re: Perfect Nuclear Cloverleaf, Book of modular 1-4 cores : 40-480MW, Losseless, two power grids, all the bells and whis

Post by mrvn »

foamy wrote: ↑
Mon Feb 22, 2021 9:39 pm
Monitoring the buffer is a bit trickier, but can again be done in constant-space, and has some benefits over using tanks to do so to boot. It keys on the fact that all turbines on the same grid will experience the same proportional draw, so if you can measure the flow rate into one you know exactly what the loading is on all of them. And from there you can work out how much of a fuel cell's worth of energy has been consumed since the last one was inserted, and whether a new one needs to be added.

Because of this, you can insert fuel cells while all your heat exchangers are still producing and cut response lag to demand increases to the absolute minimum. This means that a sudden drop to null draw could result in some waste, since you're not actually fully draining the buffer, so some additional circuitry to catch that event and account for it in the buffer math is a good idea. But that's an unusual event in an actual working reactor; here's a half-hour's worth of tracking in a 1kSPM factory that the array (doubled) is powering. There's some supplemental solar and a lot of power-switching to disable beacons, so it's swingier than some people's just-run-everything-all-the-time approaches would be, even:
I just had a long argument about this on another thread and no, you can't do that reliable.

While, assuming the same steam pressure, all turbines on the same grid will experience the same proportional draw you can't measure that exactly. Circuit logic only works on integers so there will be errors in your measurement. Computations use floating point values which are imprecise and rounding happens. So some power might be gained or lost in tiny increments over time. So if you start your reactor at 750Β°C and only refuel based on steam throughput then the temperature will go up and down randomly ever so slightly. Eventually it will overheat (waste fuel) or cool down too much (brownout). And once you have even the tiniest bit of brownout your steam measurement will think you are using less steam. So it will refuel less. It's a death spiral from that point forward.

So two problems to solve:

1) Overheating

There is no way to detect overheating and if you want to be perfect then that means inserting just a tiny bit less fuel than your steam calculations say. That way the reactor never drifts towards overheating. But then you make the second problem worse.

2) Freezing

There is a simple way to detect when the reactor cools down too much. Actually more than one. But the simplest is to watch the amount of steam you have. Not how much is consumed each tick but how much you have buffered. But if you are using that to throw in some extra fuel when the reactor cools down to much then what do you need the rest of the control circuit for? Just that backup refuel mechanism gives you a perfect reactor.

The less simple way is to check the heat exchangers output instead of the turbines consumption. More specifically pick a heat exchanger that is furthest from the reactor. If the reactor cools down then that heat exchanger is the first to shut down. So if that heat exchanger stops producing steam you need to throw in fuel. Unless the power consumption is 100% that will be before the steam level in the buffer tanks even starts to drop. (At full power consumption it's at the same time.) But again just that backup refuel mechanism gives you a perfect reactor.

So what are you doing measuring the steam consumption on the turbine? It's pointless for a perfect reactor. Change a few pipes and/or move the steam flow measuring to measure the output of one heat exchanger instead of the input of a steam turbine and you have a working design. It might look like the same idea "measure steam flow" but where you measure makes a real difference.

PS: you don't accumulate the steam flow and add up energy consumption, just detecting steam flows is the trigger. So no accumulating error there.

gGeorg
Fast Inserter
Fast Inserter
Posts: 225
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Re: Perfect Nuclear Cloverleaf, Book of modular 1-4 cores : 40-480MW, Losseless, two power grids, all the bells and whis

Post by gGeorg »

mrvn wrote: ↑
Wed Oct 20, 2021 11:08 am
That's also why I would never recommend using the 1 reactor version of this. Sure you build that first to get some power. But the material cost to go to the full 2x2 setup isn't that big and the difference is efficiency is major. 300% more efficient. Time to upgrade the plant asap, especially before covarex when sourcing fuel cells is a problem.

As for ideas to improve the design: Looks like you have space for a few extra steam turbines. While the reactor produces 480MW of power the power consumption usually fluctuates. By adding a few extra turbines you can produce more power for a short time and then make up the lost steam in times where you need less than 480MW. Obviously if you keep needing more than 480MW eventually the saved steam runs out and you only get 480MW. Thanks to the separate power grids the plant won't shut down or anything.
When you have a developed base, then 4 core plant might look like a piece of cake to craft. However, when your base is small, or it is your first map, or you do a Wave Defence mod, or you want it going now not wait another 30 minutes, or ... then you build 1 core plant. Although version with 3 cores is somewhat weird, so in the next book I would go for 1,2,4 cores.

As for ideas to improve the design : more turbines is to consider. I am doing some tests about brownouts and heat-pipe speed, so perhaps free space might be taken rather by storage tanks. Stay tuned for an update.
Last edited by gGeorg on Wed Oct 20, 2021 4:23 pm, edited 2 times in total.

gGeorg
Fast Inserter
Fast Inserter
Posts: 225
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Re: Perfect Nuclear Cloverleaf, Book of modular 1-4 cores : 40-480MW, Losseless, two power grids, all the bells and whis

Post by gGeorg »

mrvn wrote: ↑
Wed Oct 20, 2021 11:34 am
1) Overheating
There is no way to detect overheating

2) Freezing
There is a simple way to detect when the reactor cools down too much. Actually more than one. But the simplest is to watch the amount of steam you have. But if you are using that to throw in some extra fuel when the reactor cools down to much then what do you need the rest of the control circuit for? Just that backup refuel mechanism gives you a perfect reactor.
PS: you don't accumulate the steam flow and add up energy consumption, just detecting steam flows is the trigger. So no accumulating error there.
1) right, but you can prevent overheating by design. That is the looseless property of the plant.
2) several conditions have to be checked to enable perfect cell insert. Steam level is only one condition. existence of fuel in a box is other condition, and time since last insert is final condition. all three conditions together make moment for another cell. Perhaps read the docs for previous version, why 3 conditions are required. You need to click on spoiler button next to "1. Fuel Cell Loading into Core".

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

Re: Perfect Nuclear Cloverleaf, Book of modular 1-4 cores : 40-480MW, Losseless, two power grids, all the bells and whis

Post by mrvn »

gGeorg wrote: ↑
Wed Oct 20, 2021 4:11 pm
mrvn wrote: ↑
Wed Oct 20, 2021 11:34 am
1) Overheating
There is no way to detect overheating

2) Freezing
There is a simple way to detect when the reactor cools down too much. Actually more than one. But the simplest is to watch the amount of steam you have. But if you are using that to throw in some extra fuel when the reactor cools down to much then what do you need the rest of the control circuit for? Just that backup refuel mechanism gives you a perfect reactor.
PS: you don't accumulate the steam flow and add up energy consumption, just detecting steam flows is the trigger. So no accumulating error there.
1) right, but you can prevent overheating by design. That is the looseless property of the plant.
2) several conditions have to be checked to enable perfect cell insert. Steam level is only one condition. existence of fuel in a box is other condition, and time since last insert is final condition. all three conditions together make moment for another cell. Perhaps read the docs for previous version, why 3 conditions are required. You need to click on spoiler button next to "1. Fuel Cell Loading into Core".
Not what that was about. The design I commented on wants to measure power consumption by measuring steam flow to one turbine instead of the usual steam level check. The other conditions like fuel availability and not inserting more than one fuel cell at a time are a different layer.

SoShootMe
Fast Inserter
Fast Inserter
Posts: 233
Joined: Mon Aug 03, 2020 4:16 pm
Contact:

Re: Perfect Nuclear Cloverleaf, Book of modular 1-4 cores : 40-480MW, Losseless, two power grids, all the bells and whis

Post by SoShootMe »

mrvn wrote: ↑
Wed Oct 20, 2021 11:08 am
SoShootMe wrote: ↑
Fri Feb 19, 2021 4:14 am
A 2N design only makes sense if N is large, and while I don't think it is particularly hard to find a suitable lake for a 2N design generating a few tens of GW with default map settings, such a lake will typically be much wider and you must landfill not only almost all the rectangle (leaving holes for the offshore pumps) but also a significant amount on one or both sides.

Personally (each to their own as always), I like to broadly fit the terrain, so I see "build nearly anywhere" and "no landfill" as significant benefits, and designs like this are of interest (thanks for sharing, gGeorg).
Actually not true. The most gain in a 2N reactor is for low N.
For clarity: by "2N design" I meant the term as used in the OP, a design that can be tiled to create an arbitrarily (or very) large plant, in contrast to one designed for a certain number of reactors like the (full-size version of the) design presented by gGeorg.

Yes, more reactors gives diminishing returns in terms of efficiency (energy per fuel cell or power per reactor). Equivalently, as the number of reactors grows, you need ever more additional reactors for a given improvement in efficiency. Unlike a 2N design, a fixed 2x4 design does not suffer the drawbacks highlighted in the OP (such as needing landfill), and even an infinite 2N design is only 14% more efficient. For an appreciable efficiency gain over 2x4, N must be large (eg N>=14 to exceed 10%).

I can see other benefits of a 2N design - simple expansion, of course, and simplified logistics (you only need fuel cells in one place or few places) - but these only apply if N, respectively, can grow to be and is large.

So unless you are going to make a really large plant using a 2N design, I think you might as well use multiple copies of a fixed (say) 2x4 design or, for more flexible placement but somewhat lower efficiency, 2x2 design (like gGeorg's cloverleaf). Smaller than 2x2 and you really are losing a lot of efficiency though.

foamy
Filter Inserter
Filter Inserter
Posts: 426
Joined: Mon Aug 26, 2019 4:14 am
Contact:

Re: Perfect Nuclear Cloverleaf, Book of modular 1-4 cores : 40-480MW, Losseless, two power grids, all the bells and whis

Post by foamy »

mrvn wrote: ↑
Wed Oct 20, 2021 11:34 am
foamy wrote: ↑
Mon Feb 22, 2021 9:39 pm
Monitoring the buffer is a bit trickier, but can again be done in constant-space, and has some benefits over using tanks to do so to boot. It keys on the fact that all turbines on the same grid will experience the same proportional draw, so if you can measure the flow rate into one you know exactly what the loading is on all of them. And from there you can work out how much of a fuel cell's worth of energy has been consumed since the last one was inserted, and whether a new one needs to be added.

Because of this, you can insert fuel cells while all your heat exchangers are still producing and cut response lag to demand increases to the absolute minimum. This means that a sudden drop to null draw could result in some waste, since you're not actually fully draining the buffer, so some additional circuitry to catch that event and account for it in the buffer math is a good idea. But that's an unusual event in an actual working reactor; here's a half-hour's worth of tracking in a 1kSPM factory that the array (doubled) is powering. There's some supplemental solar and a lot of power-switching to disable beacons, so it's swingier than some people's just-run-everything-all-the-time approaches would be, even:
I just had a long argument about this on another thread and no, you can't do that reliable.

While, assuming the same steam pressure, all turbines on the same grid will experience the same proportional draw you can't measure that exactly. Circuit logic only works on integers so there will be errors in your measurement. Computations use floating point values which are imprecise and rounding happens. So some power might be gained or lost in tiny increments over time. So if you start your reactor at 750Β°C and only refuel based on steam throughput then the temperature will go up and down randomly ever so slightly. Eventually it will overheat (waste fuel) or cool down too much (brownout). And once you have even the tiniest bit of brownout your steam measurement will think you are using less steam. So it will refuel less. It's a death spiral from that point forward.
The issue isn't with integers or floating point. The circuitry is absolutely reliable in that sense: it actually correctly converts the floating point fluids into integer circuit signals by accumulating them over a (usually fairly short) time interval.

The flow meter is a negative-edge-detection setup hooked into a single steam tank on a separate steam source from the nuclear complex(es). It's got a pump on either end of it -- one filling it from an unclocked steam tank that a heat exchanger/boiler can happily dump into, one emptying from it into the turbine/steam engine. Those signals are then fed into a memory cell.

The pumps are used to both valve the measurement tank so that it is only filling or only emptying. The fill rate of a pumped-tank-to-tank connection is 200 fluid/tick (at least when it's going from a near-full tank to near-empty, as here), and the drain at continuous max consumption hovers at 1 fluid/tick (1 steam turbine or 2 steam engines).

What happens when that consumption is, say, 0.25 fluid/tick (representing about 25% draw)?

Tick 1: Measure tank goes from 1200 to 1199.75. This gets truncated to 1199 by the circuit system, so the edge detection fires, so a signal of 1 gets stored in the memory cell.
Tick 2: Measure tank goes from 1199.75 to 1199.50. No signal generated, so the memory cell stays at 1.
Tick 3: Measure tank goes from 1199.50 to 1199.25. No signal generated, so the memory cell stays at 1.
Tick 4: Measure tank goes from 1199.25 to 1199.00. No signal generated, so the memory cell stays at 1.

At this point, the memory cell is exactly accurate to the steam consumed. It will drift again the next time it drops below an integer value in the steam tank, but recover again. Thus, while it will basically always be out by some fraction of a single steam unit to the actual steam consumed, it will never be out by more than one steam unit.

(Note: This is also why you can shut off the drain when you refill it. The steam turbine/engines have a small internal buffer, which they will consume from. Once the fill is complete, that buffer will be refilled from the measurement tank, which will then report how much was required to do so.)

From there there's a bit of math to determine exactly what the value in the memory cell represents in terms of your particular plant's layout. The trick here is that what you want to know is how long, in ticks, it would take all your turbines running at 100% capacity, to fully consume a set of fuel cells being inserted.

This is reactor output / turbine output * 12000. The reactor output encodes the overall efficiency of the array for you (i.e. how much energy you get from inserting cells, including edge dropoff; it's just divided by 200 seconds as a power number). You just need to convert back to ticks (hence the multiplication by 12000) because that's what your incoming measurement is in.

In most reactor designs this number will hover fairly close to, but slightly under, 12000. You can hand-calculate it or feed it in from a combinator setup if you like, although if you do the latter take care to do the multiplication before the division.


So, consider a 2x2 reactor with 480MW output on the reactors, and an oversized array of turbines that can draw 582 MW. Multiply 480 by 12000 and then divide by 582 (all integers!), and you get a result of 9896(.9) ticks for the turbines to remove all the heat of a fuelling cycle. For my 2x14 tileable, you get 4320 MW reactor output and 4656 MW turbine, for a result of 11134(.0).

As long as you truncate this result, as the Factorio combinators do, this guards against freezing. You will insert cells, by the consumption measurement, one or two ticks ahead of schedule. This will cause a consistent (but very slow) drift towards additional energy being in the system. However, once fuel cell energy starts being lost from overfilling the heat pipe buffer, it will immediately stabilize. It will take an enormous amount of time for this loss to amount to even a single additional swing.

This also ensures you always have full production available from your heat exchangers in response to demand surges following a period of low activity.

The one absolutely critical requirement is that there has to be enough buffer space in the heat pipes to avoid unaccounted for buffer spill. If there isn't, what will happen is that the draw numbers are accurate but the production ones will be low (because of the lost heat), which will make the buffer draw down because a fuelling cycle won't be triggered when it should be.

To some extent this is desirable behaviour as it self-corrects, as above, a slightly overfull buffer back down to an efficient one, but in large amounts -- a reactor idled during a fuelling cycle because of significant expansion, or because it's cogenerating with solar, or a power line was cut, or whatever -- it becomes a problem. It isn't a death spiral, as such, because it will recover on the next fuel insertion, but it means that in the tail end of that cycle the reactor may not be supplying power to the grid when the circuits think it is.

A reliable solution to that problem (outside of sizing the heat pipe buffer to be large enough) is one I don't have a simple solution for yet. In principle, with a buffer of known (but potentially insufficient) size, you should also be able to track specifically power use over the course of the reactor burning fuel, and then work out if heat_added - heat_removed > buffer working capacity, and if so by how much, and add that to your energy-consumed calculation. However determining the working actual buffer capacity of heat pipes and reactors is a non-trivial task.
Eventually it will overheat (waste fuel) or cool down too much (brownout). And once you have even the tiniest bit of brownout your steam measurement will think you are using less steam. So it will refuel less. It's a death spiral from that point forward.
This, however, is a non-issue. Because the measurement system is separate from the main reactor, it cannot read low. It will report accurately no matter what the main is doing (usual caveats about the measurement system needing a UPS and such). That means that if, for example, the main reactor cools off and for that reason isn't generating as much steam as it should to power the turbines, the measurement system will tell it to insert cells as if the turbines were working at their nominal draw.

In other words, it will tell the main reactor add heat faster than it gets removed, which will thus reheat the mains and cause a recovery to nominal operation. This prevents the death spiral you're discussing, which I believe is predicated on the idea that you're measuring the flows inside the main reactor complex proper.

Measuring the output of a heat exchanger is an interesting idea, but I'm not certain it's feasible. The mechanics of measuring an input flow are much more complex than measuring a drain.

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

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by mrvn »

See viewtopic.php?p=554723#p554723 for my take on using flow as trigger. I'm measuring the water going into the heat exchanger instead of the steam coming out. That gives me the heat exchangers out fluid box and the 2 steam turbines fluid box as extra steam buffer. Adds another 3.x seconds buffer.

At first I considered having a tank that I fill and then switch over to draining it and measuring how it drops so that fractions of a unit simply roll over into the next measurment. But alternating betweem draining the tank and filling it in long enough intervals that the fractions would accumulate to matter enough would just add complexity. In my case (2x2 reactors) a 1MW power consumption should already remove 1unit of water in 5 ticks. I think that's a low enough threshold.
foamy wrote: ↑
Wed Oct 20, 2021 6:57 pm
At this point, the memory cell is exactly accurate to the steam consumed. It will drift again the next time it drops below an integer value in the steam tank, but recover again. Thus, while it will basically always be out by some fraction of a single steam unit to the actual steam consumed, it will never be out by more than one steam unit.

(Note: This is also why you can shut off the drain when you refill it. The steam turbine/engines have a small internal buffer, which they will consume from. Once the fill is complete, that buffer will be refilled from the measurement tank, which will then report how much was required to do so.)

From there there's a bit of math to determine exactly what the value in the memory cell represents in terms of your particular plant's layout. The trick here is that what you want to know is how long, in ticks, it would take all your turbines running at 100% capacity, to fully consume a set of fuel cells being inserted.
Yes, between ticks there is no accumulation of the error ( other than the accuracy of the floats, which is irrelevant in practice) as the fractions just roll over into the next tick. The error is at most 1 unit at each measurement.

But then you refill. That destroys the fraction you have not yet counted. And it also might refill a fraction. Or do you always refill till the tank is full? Either way that is an error of <1 (or <2) units of steam. Average would be 0.5 (1) units. While that is a miniscule amount of power over time it adds up and your calculated value divereges from the actual value of consumed power.

Fact is you do need some way to recalibrate the value every now and then or you risk reaching levels where overheating or brownout occurs. Might not happen in the first 100 hours, might not happen for a year. But for a perfect design you need to account for it.
foamy wrote: ↑
Wed Oct 20, 2021 6:57 pm
To some extent this is desirable behaviour as it self-corrects, as above, a slightly overfull buffer back down to an efficient one, but in large amounts -- a reactor idled during a fuelling cycle because of significant expansion, or because it's cogenerating with solar, or a power line was cut, or whatever -- it becomes a problem. It isn't a death spiral, as such, because it will recover on the next fuel insertion, but it means that in the tail end of that cycle the reactor may not be supplying power to the grid when the circuits think it is.
Go through the control logic step by step again for the case of the reactor getting to cool for some reason. Unless you did something really unexpected the refueling logic uses the amount of steam used in the turbine. With no steam available there is nothing to count. So your control logic will see e.g. only a 99% duty cycle. So it throws in fuel late than needed. Next time it only reads 98% duty cycle so it delays even more. Measuring the steam throughput can't work if you don't have steam to count.
foamy wrote: ↑
Wed Oct 20, 2021 6:57 pm
A reliable solution to that problem (outside of sizing the heat pipe buffer to be large enough) is one I don't have a simple solution for yet. In principle, with a buffer of known (but potentially insufficient) size, you should also be able to track specifically power use over the course of the reactor burning fuel, and then work out if heat_added - heat_removed > buffer working capacity, and if so by how much, and add that to your energy-consumed calculation. However determining the working actual buffer capacity of heat pipes and reactors is a non-trivial task.
I did some napkin math for my reactor. For the 2x2 (480MW) reactor that inserts 4 fuel cells I figured you need only 168 heat pipes. 4 separate heat pipe lines going by all the heat exchangers is already 140 heat pipes. So increasing that to buffer a full fuel cycle is trivial. My test case has 4.5 fuel cycles thermal buffer and it's not that many heat pipes. They do add up quickly.

But ouside of the size of the heap pipe buffer I think there is a simple solution too. When you are in brownout territory then you lack steam to refill your steam tank for measurements. You can detect not enough fresh steam flowing in on refill or simply check the level of steam at the end of the refill. If the steam level is low throw in another fuel cell.
foamy wrote: ↑
Wed Oct 20, 2021 6:57 pm
Eventually it will overheat (waste fuel) or cool down too much (brownout). And once you have even the tiniest bit of brownout your steam measurement will think you are using less steam. So it will refuel less. It's a death spiral from that point forward.
This, however, is a non-issue. Because the measurement system is separate from the main reactor, it cannot read low. It will report accurately no matter what the main is doing (usual caveats about the measurement system needing a UPS and such). That means that if, for example, the main reactor cools off and for that reason isn't generating as much steam as it should to power the turbines, the measurement system will tell it to insert cells as if the turbines were working at their nominal draw.

In other words, it will tell the main reactor add heat faster than it gets removed, which will thus reheat the mains and cause a recovery to nominal operation. This prevents the death spiral you're discussing, which I believe is predicated on the idea that you're measuring the flows inside the main reactor complex proper.
Let me rethink what I wrote above. I think you mentioned that the measurement system is separate from the main steam line. So you probably pump steam in there with priority. So even if the reactor is only generating 50% steam the measurement system gets plenty. And while other steam turbines would run out of steam and cause a brownout that would only cause the turbine for your measurement system to go full throttle. So you might be right about the reactor recovering because it still measures 100% duty cycle even if it only provides 50% power.
foamy wrote: ↑
Wed Oct 20, 2021 6:57 pm
Measuring the output of a heat exchanger is an interesting idea, but I'm not certain it's feasible. The mechanics of measuring an input flow are much more complex than measuring a drain.
To measure the output you pump it into a tank and watch the level rise. Easy enough. But at some point the tank is full and now you need to drain it. Where do you put that steam? Pumping it into just one turbine takes way to long to consume it. But you could pump it into the outside end of all the steam turbines of the reactor. If that still can't get rid of the steam you know you have enough power for sure. OR ...

Steam out == water in. If you can't measure the steam coming out of the heat exchanger then measure the water flowing into the heat exchanger.

The problem I have there is that the reactor under full power and the reactor with no power drain look exactly the same. 0 units of water are consumed by the measurement system. But one means I need fuel and the other means I better not.

foamy
Filter Inserter
Filter Inserter
Posts: 426
Joined: Mon Aug 26, 2019 4:14 am
Contact:

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by foamy »

mrvn wrote: ↑
Wed Oct 20, 2021 8:14 pm

Yes, between ticks there is no accumulation of the error ( other than the accuracy of the floats, which is irrelevant in practice) as the fractions just roll over into the next tick. The error is at most 1 unit at each measurement.

But then you refill. That destroys the fraction you have not yet counted. And it also might refill a fraction. Or do you always refill till the tank is full? Either way that is an error of <1 (or <2) units of steam. Average would be 0.5 (1) units. While that is a miniscule amount of power over time it adds up and your calculated value divereges from the actual value of consumed power.

Fact is you do need some way to recalibrate the value every now and then or you risk reaching levels where overheating or brownout occurs. Might not happen in the first 100 hours, might not happen for a year. But for a perfect design you need to account for it.
While the refill can potentially introduce errors, I'm not sure it does. The pump will move (as far as I can tell) exactly 200 units of fluid in one tick (or so close as to be irrelevant). So if you go from 1000.1 to 999.9, then to 1119.9, which then proceeds to drain per normal. As long as it doesn't significantly shift the decimal things should not drift at all. Even if it does change it, those changes I suspect would tend in the direction of not-quite-hitting 200, being 199.95 or something. This will very slightly overreport the steam consumed, which means the reactor will trigger very slightly more often than strictly needed. This is fine, as I've outlined, because it's a lot better for a reactor to waste a smidgen of fuel than it is to drift towards cold.
foamy wrote: ↑
Wed Oct 20, 2021 6:57 pm
To some extent this is desirable behaviour as it self-corrects, as above, a slightly overfull buffer back down to an efficient one, but in large amounts -- a reactor idled during a fuelling cycle because of significant expansion, or because it's cogenerating with solar, or a power line was cut, or whatever -- it becomes a problem. It isn't a death spiral, as such, because it will recover on the next fuel insertion, but it means that in the tail end of that cycle the reactor may not be supplying power to the grid when the circuits think it is.
Go through the control logic step by step again for the case of the reactor getting to cool for some reason. Unless you did something really unexpected the refueling logic uses the amount of steam used in the turbine. With no steam available there is nothing to count. So your control logic will see e.g. only a 99% duty cycle. So it throws in fuel late than needed. Next time it only reads 98% duty cycle so it delays even more. Measuring the steam throughput can't work if you don't have steam to count.
...
foamy wrote: ↑
Wed Oct 20, 2021 6:57 pm
Eventually it will overheat (waste fuel) or cool down too much (brownout). And once you have even the tiniest bit of brownout your steam measurement will think you are using less steam. So it will refuel less. It's a death spiral from that point forward.
This, however, is a non-issue. Because the measurement system is separate from the main reactor, it cannot read low. It will report accurately no matter what the main is doing (usual caveats about the measurement system needing a UPS and such). That means that if, for example, the main reactor cools off and for that reason isn't generating as much steam as it should to power the turbines, the measurement system will tell it to insert cells as if the turbines were working at their nominal draw.

In other words, it will tell the main reactor add heat faster than it gets removed, which will thus reheat the mains and cause a recovery to nominal operation. This prevents the death spiral you're discussing, which I believe is predicated on the idea that you're measuring the flows inside the main reactor complex proper.
Let me rethink what I wrote above. I think you mentioned that the measurement system is separate from the main steam line. So you probably pump steam in there with priority. So even if the reactor is only generating 50% steam the measurement system gets plenty. And while other steam turbines would run out of steam and cause a brownout that would only cause the turbine for your measurement system to go full throttle. So you might be right about the reactor recovering because it still measures 100% duty cycle even if it only provides 50% power.
Basically, but when I say separate I mean entirely separate. There is no connection needed other than electrical and a signal wire between the steam measuring system and the main reactor. In fact, the steam measuring system can be done with boilers and steam engines! It strictly measures what the grid is asking turbines to do. It can fail if it itself runs out of fuel, or the combinators/pumps brown out, but feeding a single boiler is outright trivial and the combinators and pumps can be run off a single solar panel and accumulator with perfect reliability, so in practice it's not difficult.
foamy wrote: ↑
Wed Oct 20, 2021 6:57 pm
Measuring the output of a heat exchanger is an interesting idea, but I'm not certain it's feasible. The mechanics of measuring an input flow are much more complex than measuring a drain.
To measure the output you pump it into a tank and watch the level rise. Easy enough. But at some point the tank is full and now you need to drain it. Where do you put that steam? Pumping it into just one turbine takes way to long to consume it. But you could pump it into the outside end of all the steam turbines of the reactor. If that still can't get rid of the steam you know you have enough power for sure. OR ...

Steam out == water in. If you can't measure the steam coming out of the heat exchanger then measure the water flowing into the heat exchanger.

The problem I have there is that the reactor under full power and the reactor with no power drain look exactly the same. 0 units of water are consumed by the measurement system. But one means I need fuel and the other means I better not.
I've been thinking about it some since you mentioned your design in the other thread. What I think I'd do is a double-tank system. Because what you're after isn't a precise measure, but rather that anything is accumulating at all, and you're using the physical layout of the heat pipes as your throttle, what you can do is have the test exchanger dump into a tank, which you measure to see if it's level is rising. When it hits some threshold, you trigger a pump to dump into another tank. That one in turn feeds a pair of turbines, and is monitored to see if it's level has climbed too high. The turbines are switched: if the second tank is fine, they just feeds onto the normal grid whatever bits and bobs the exchanger's contributed. If the second tank has gotten too full, they instead toggle over and start trying to power a sink (i.e. a beacon or radar square) in order to force them to drain it.

EDIT: This setup I believe will also allow you to distinguish between no-load and no-power, because you've created an artificial load. There will be some loss here because your measurement heat exchanger, if it has heat, will never have backpressure and therefore will always run, which means in turn that if your main grid is at 50% capacity, half the energy of that measurement exchanger will wind up being fed to the sink. This can be mitigated by adding more turbines, though. If you have 4, 50% becomes lossless, for example.

It'll be interesting to test this. It could be an elegant solution to the buffer issues.

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

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by mrvn »

foamy wrote: ↑
Wed Oct 20, 2021 8:59 pm
I've been thinking about it some since you mentioned your design in the other thread. What I think I'd do is a double-tank system. Because what you're after isn't a precise measure, but rather that anything is accumulating at all, and you're using the physical layout of the heat pipes as your throttle, what you can do is have the test exchanger dump into a tank, which you measure to see if it's level is rising. When it hits some threshold, you trigger a pump to dump into another tank. That one in turn feeds a pair of turbines, and is monitored to see if it's level has climbed too high. The turbines are switched: if the second tank is fine, they just feeds onto the normal grid whatever bits and bobs the exchanger's contributed. If the second tank has gotten too full, they instead toggle over and start trying to power a sink (i.e. a beacon or radar square) in order to force them to drain it.

EDIT: This setup I believe will also allow you to distinguish between no-load and no-power, because you've created an artificial load. There will be some loss here because your measurement heat exchanger, if it has heat, will never have backpressure and therefore will always run, which means in turn that if your main grid is at 50% capacity, half the energy of that measurement exchanger will wind up being fed to the sink. This can be mitigated by adding more turbines, though. If you have 4, 50% becomes lossless, for example.

It'll be interesting to test this. It could be an elegant solution to the buffer issues.
You said you only enable the sink when the normal feed backlogs. At 50% duty cycle all the steam should just drain away. I think if you have the heat exchanger on one end of 2 turbines and a pump on the other then each will power one turbine regardless of the drain. Connect to all steam turbines and you have 50% of the total reactor output to drain your tank. So at 50% load that's 25% that would come from just the output of the one control heat exchanger. It would empty at the speed of the pump.

On top a pump has 30kW working and 1kW drain. So for my case at a minimum of 48kW drain right there.


The thing is I taken up the challenge of mmmPi to not have and measure a single steam tank. Otherwise the solution is trivially simple. Just add one steam tank to the end of the last steam turbine before the thermal detector. When the detector sees no water usage and it's full of steam then the reactor is not running full power. If it's running exactly full power to a single J with the tank full then just a few ticks will make the tank drop.

When the reactor cools down it happens gradually. The head exchangers loose temperature and the steam produces slowly goes form 60/s to 0/s. So the drain on the tank will be small at first and increase over several seconds. And one unit of steam used is enough to detect. So the heat exchanger dropping to 59/s is enough to trigger a refuel.

Makes the thermal check obsolete though as it can just replace it. No challenge there.

foamy
Filter Inserter
Filter Inserter
Posts: 426
Joined: Mon Aug 26, 2019 4:14 am
Contact:

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by foamy »

mrvn wrote: ↑
Wed Oct 20, 2021 9:39 pm
You said you only enable the sink when the normal feed backlogs. At 50% duty cycle all the steam should just drain away.
I don't think so? If there's a 50% load, the test exchanger will be producing, but it'll be producing at 100% unlike all the other exchangers (because you've given it guaranteed drain, whereas the the other exchangers have back pressure). That means you also need to be able to remove the full output of a heat exchanger.

And if you don't have a guaranteed drain, you can't tell whether or not you've got no incoming steam or an output clog. You need to remove the possibility of an output clog in order to reliably check for the no-steam situation.

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

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by mrvn »

foamy wrote: ↑
Wed Oct 20, 2021 10:11 pm
mrvn wrote: ↑
Wed Oct 20, 2021 9:39 pm
You said you only enable the sink when the normal feed backlogs. At 50% duty cycle all the steam should just drain away.
I don't think so? If there's a 50% load, the test exchanger will be producing, but it'll be producing at 100% unlike all the other exchangers (because you've given it guaranteed drain, whereas the the other exchangers have back pressure). That means you also need to be able to remove the full output of a heat exchanger.

And if you don't have a guaranteed drain, you can't tell whether or not you've got no incoming steam or an output clog. You need to remove the possibility of an output clog in order to reliably check for the no-steam situation.
Not if you drain the tank into the main steam supply. Then you would pump the steam into 48 of the regular steam turbines. Each one running at 50%. So 48 * 103 / 2 = ~2400 steam/s are consumed. The heat exchanger only produces 103 steam/s.

I tried it and it drains fast with the reactor has some load. Doesn't help at all if the reactor has no drain, because for example some idiot (or alien) cut the power line in a multiplayer game.

So I'm using 1 radar and 4 lamps as my drain now and power them exclusively from the test steam turbines. The main power also draws from the test steam turbines. So if there is a load the thermal check really quickly detects power usage and ends. The radar really only powers on noticeably when the power drain is in the single digit MW range or 0. So minimal loss.

gGeorg
Fast Inserter
Fast Inserter
Posts: 225
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by gGeorg »

after testing edge cases, like massive overload consumption, I found out, the all fluid pumps have to be powered by internal power grid. Otherwise it make plant stall. So I removed a combinator contraption (which deliver only partial solution) then add another solar panel and make proper wiring for pumps.

Better brownout protection - added 8 heatpipes as possible heat storage and rised optimal steam level to 20k. Also some tank positioning for better flow. as result, plant has heat/steam reserve storage for 36 second of full run, which is enough for re-start from 500C. Plant can deliver 480MW anytime, no brownouts. (try to make one, so you can tell I made a mistake ;) )

Colverleaf v2.11 update


Althou this version is better than original, I think the best version is probably tank-less. Dont know yet how to reach it thou.

EDIT: fixed mistake in bluperint. thx tp mmmPI to point it out.
Last edited by gGeorg on Mon Nov 01, 2021 7:21 pm, edited 4 times in total.

mmmPI
Filter Inserter
Filter Inserter
Posts: 855
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by mmmPI »

That's a safe option, since you have incorporated the water input with a storage tank and a pump it's not really worth trying to go full pumpless. This kind of design in a grid would required powered water input contrary to design prepared for lake & landfill method; in this case solar is good, and accumulators too :).

Your auto-insulation mechanism inspired me haha.

I wonder why you want to go tankless, to buffer energy you would have to use heat pipes, given your objective of UPS efficiency i'm not sure it's worth having fluctuating temperature over fluctuating quantity.

You have the room in the blueprint for them i think if you use a double or triple row of them between the exchanger with a bit of adjustment but i guess that is not what prevent you from going tankless, i wonder what it is.

[Edit : how do you start the new version ? for me the contraption on the bottom right seems to not send the green signal that would trigger the pumps, the fuel is inserted but the accumulator when E<30 or E>70 doesn't trigger pump sending steam to turbines what did i do wrong ?]

gGeorg
Fast Inserter
Fast Inserter
Posts: 225
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by gGeorg »

mmmPI wrote: ↑
Mon Nov 01, 2021 5:44 pm
That's a safe option, since you have incorporated the water input with a storage tank and a pump it's not really worth trying to go full pumpless.
Tank-less vs Pumpless. :idea:
mmmPI wrote: ↑
Mon Nov 01, 2021 5:44 pm
This kind of design in a grid would required powered water input contrary to design prepared for lake & landfill method; in this case solar is good, and accumulators too :).
No. Water input is 2x3 tubes, it means, 200 pipes long to 6 shorepumps is possible.
mmmPI wrote: ↑
Mon Nov 01, 2021 5:44 pm
Your auto-insulation mechanism inspired me haha.
:ugeek:
mmmPI wrote: ↑
Mon Nov 01, 2021 5:44 pm
I wonder why you want to go tankless, to buffer energy you would have to use heat pipes, given your objective of UPS efficiency i'm not sure it's worth having fluctuating temperature over fluctuating quantity.
Fluids are a bit unpredictable. I measure level one of 8 steam tanks, and hope others share level. In orignal position, the measred tank has always lowest level, but it might change when you rotate blueprint then build it.
mmmPI wrote: ↑
Mon Nov 01, 2021 5:44 pm
You have the room in the blueprint for them i think if you use a double or triple row of them between the exchanger with a bit of adjustment but i guess that is not what prevent you from going tankless, i wonder what it is.
yes, but I need to create "a_heat_spread_bottlenek" to connect heatpipes_as_storage.
mmmPI wrote: ↑
Mon Nov 01, 2021 5:44 pm
[Edit : how do you start the new version ? for me the contraption on the bottom right seems to not send the green signal that would trigger the pumps, the fuel is inserted but the accumulator when E<30 or E>70 doesn't trigger pump sending steam to turbines what did i do wrong ?]
Re-checking, give me few minutes.
EDIT: fixed. I forgot to power up the latch. Now Powerplant autostarts as expected. Only need sunlight.
Last edited by gGeorg on Mon Nov 01, 2021 6:59 pm, edited 1 time in total.

mmmPI
Filter Inserter
Filter Inserter
Posts: 855
Joined: Mon Jun 20, 2016 6:10 pm
Contact:

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by mmmPI »

gGeorg wrote: ↑
Mon Nov 01, 2021 6:39 pm
No. Water input is 2x3 tubes, it means, 200 pipes long to 6 shorepumps is possible.
mmm but then you put the water in 2 tanks, and use a pump to extract from the tanks, so no power, no water. this is why i think solar is good.

But in a grid map it's ok, you don't have a lake in every area so you most likely already import water using electricity the pump in the power plant is just a detail, most important is how you make the 200 pipes to 6 shorepumps. If you need electricity because you have 250 tile and use pump, then you need solar for safety not just in the nuclear plant, but for the water supply outside the power plant too.

Nothing you can really add in your design, it's just people need to think where to build because if you build 5x5 cloverleaf for 100 core, the middle area is more difficult to supply in water.


You said you added solar, other option was remove pump, but in this case, you cannot remove pump always, so better go solar this what i meant :)
gGeorg wrote: ↑
Mon Nov 01, 2021 6:39 pm
yes, but I need to create "a_heat_spread_bottlenek" to connect heatpipes_as_storage.
i don't understand this

gGeorg
Fast Inserter
Fast Inserter
Posts: 225
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Re: Perfect Nuclear Cloverleaf, Modular 1-4 cores book : 40-480MW, Lossless, Two power grids, All the bells and whistles

Post by gGeorg »

mmmPI wrote: ↑
Mon Nov 01, 2021 6:57 pm
gGeorg wrote: ↑
Mon Nov 01, 2021 6:39 pm
No. Water input is 2x3 tubes, it means, 200 pipes long to 6 shorepumps is possible.
mmm but then you put the water in 2 tanks, and use a pump to extract from the tanks, so no power, no water. this is why i think solar is good. You said you added solar, other option was remove pump, but in this case, you cannot remove pump always, so better go solar this what i meant :)
water tanks work as aggregation device. It sort of suck water due to level rule, then directly attached one pump can handle the local delivery for half a plant. Outside connection is not part of blueprint, but it is desgned to allow long connection to be able to use only shorepumps. this advantages is in the top post. As you say, when you need even longer, you need to add own solution. Agree that, Solars are most reliable for this task.
mmmPI wrote: ↑
Mon Nov 01, 2021 6:57 pm
most important is how you make the 200 pipes to 6 shorepumps. If you need electricity because you have 250 tile and use pump,
errr, 200 pipes is: ( 200/2 ) * 11 = 1100 tiles. It is quite far away.
mmmPI wrote: ↑
Mon Nov 01, 2021 6:57 pm
gGeorg wrote: ↑
Mon Nov 01, 2021 6:39 pm
yes, but I need to create "a_heat_spread_bottlenek" to connect heatpipes_as_storage.
i don't understand this
It is a bit fresh idea. You will understand it immediately, when I make at least test design. ;)

gGeorg
Fast Inserter
Fast Inserter
Posts: 225
Joined: Wed Jun 19, 2019 8:06 pm
Contact:

Re: Perfect Nuclear Cloverleaf v2, Modular 1-4 cores book : 40-480MW, All the bells and whistles

Post by gGeorg »

Release the improved version Perfect clover leaf v2
- zero cold interval (feeding logic based on time ticking )
- reliable under edge cases (zero / overwhelming consumption)
- even more compact
- Improved documentation
- added xlsx for download to count thermal capacity of any power plant
First post is updated accordingly, download up there.

Ideas or even criticism are welcome.

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

Re: Perfect Nuclear Cloverleaf v2, Modular 1-4 cores book : 40-480MW, All the bells and whistles

Post by mrvn »

Looks like there would be space to include fuel cell recycling.

Post Reply

Return to β€œEnergy Production”