[0.17.79] Can't empty storage tanks arrays to zero.

We are aware of them, but they have low priority. We have more important things to do. They go here in order not to take space in the main bug thread list.
Locked
movax20h
Fast Inserter
Fast Inserter
Posts: 164
Joined: Fri Mar 08, 2019 7:07 pm
Contact:

[0.17.79] Can't empty storage tanks arrays to zero.

Post by movax20h »

I am sure somebody already reported it, but I really can't find any report on it.

It is not possible to drain storage tank array down to zero. This is really annoying, if you want to rearrange tank arrays to be used for different fluids. Destroying / deconstructing and constructing again is just a silly workaround, especially if there is other infrastructure in between too.

If it is by design, then well, it is super annoying and I still consider it a bad for the game play.

It would be nice for them drain to zero, even if it happens exponentially slow.

Examples:
Attachments
427520_screenshots_20191124213420_1.jpg
427520_screenshots_20191124213420_1.jpg (1.5 MiB) Viewed 2866 times
427520_screenshots_20191124142327_1.jpg
427520_screenshots_20191124142327_1.jpg (1.48 MiB) Viewed 2866 times
427520_screenshots_20191119184616_1.jpg
427520_screenshots_20191119184616_1.jpg (1.4 MiB) Viewed 2866 times

User avatar
valneq
Smart Inserter
Smart Inserter
Posts: 1149
Joined: Fri Jul 12, 2019 7:43 am
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by valneq »

The Wiki says about the fluid system:
Wiki wrote: All connected tanks and pipes are treated as a single vessel in that the level of fluid must be equal in all parts, to even out pressure exacted by a higher fluid level on smaller ones. This is why level is also often referred to as pressure, even though pressure is actually caused by a difference in level between two entities. All flow of fluid that happens between pipes is to achieve this balance (pumps practically ignore it and buildings disrupt it; more on that further below). The flow rate between pipes is dependent on pressure (the difference in level between the adjacent entities), it becomes slower as pipes even their levels out.
Further down in the same article it also says
Wiki wrote: If a pipe section becomes too long without using pumps, all fluid inside it will be "spread thin", resulting in very slow flow and preventing machines to use its contents effectively. Tanks behave the same as pipes, except their volume is much greater, which can cause this inconvenience over a much smaller distance if multiple tanks are used.
In your pictures, you can see that the tanks immediately connected to tanks are in fact empty. I am certain that you will see the ones immediately connected to them are almost empty. With the difference being small, the flow rate from the almost empty one to the totally empty one will be just very small. This continues deeper into the bulk of your array. The deeper you are in the array, the smaller the exponent in the exponential decay will be. But it should still be exponential.

I believe the only fast way to really empty a storage tank is to have a pump pumping directly attached to the tank. I think you will not get around deconstructing the storage tanks, if you want them to empty out in an acceptable timeframe.

User avatar
valneq
Smart Inserter
Smart Inserter
Posts: 1149
Joined: Fri Jul 12, 2019 7:43 am
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by valneq »

Why do you need these large fluid buffers in the first place? Does your production or consumption happen with sharp peaks in time, so that these buffers need to be so big as to smoothen out the peaks? Is it to deal with the different multiple outputs of oil refineries? Is it in order to never run of of fluid input for your production lines of a super-duper megabase?
In any of these cases, by just looking at the pictures, I have the impression that there is room for optimization. Regardless, of whether you want to relocate your fluid buffers or not.

movax20h
Fast Inserter
Fast Inserter
Posts: 164
Joined: Fri Mar 08, 2019 7:07 pm
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by movax20h »

valneq wrote:
Sun Nov 24, 2019 11:09 pm
Why do you need these large fluid buffers in the first place? Does your production or consumption happen with sharp peaks in time, so that these buffers need to be so big as to smoothen out the peaks? Is it to deal with the different multiple outputs of oil refineries? Is it in order to never run of of fluid input for your production lines of a super-duper megabase?
In any of these cases, by just looking at the pictures, I have the impression that there is room for optimization. Regardless, of whether you want to relocate your fluid buffers or not.
It is not a megabase. It is my first base actually, and I finished the game for the first time just few days ago. Here are some essential stats from last 10 hours: 2.9k/m electronic circuits (green), 574/m of advanced circuit (red), 50/m space science pack (white), 2k/m plastic bar, 101/m processing unit (purple). 115/m sulfur. I do produce also quite a bit of explosive and artillery shells, for raining with artillery shells on biter bases. I do not know how much plastic and sulfur it really uses. I know I have enough. I use about 1GW of power on production (ignoring defenses which is probably another 0.5GW). I feel the base is all rather small actually, with a lot of bottlenecks and improvements I will be making in the coming days.

There is certainly room for optimization of oil buffering, and ratios of consumers, but that is not the point of my report.

I did build the big liquid buffer because:
  1. It looks cool and uniform.
  2. It was cheap - I had plenty of storage tanks, and I had space to do it, and I wanted some buffer.
  3. It didn't want to go deep into calculations how many storage tanks I need. Maybe one storage tank would suffice, I don't know or care at this moment.
  4. I wanted reasonable buffer, that if I screw up the balance, or input resources (coal / crude oil) run out for any reason (oil patch becoming dry, coal patch running out, or train / belt accidentally removed, or some other silly mistake, like no fuel in locomotives, or sudden stop in production of plastic, or I screw up balance and ratios once I put in new modules into various assemblers and chemical plants, I keep factory buffering and producing, so
    1. I do not waste time while I wait for it to fully restart,
    2. Gives me an indication and enough time to fix it.
So, there is no efficiency or throughput reasons behind these storage tanks. And I probably (or certainly) don't need that many, but that is not my point.

I just find middle storage tanks in the array not draining to zero a bit annoying (they stay at 0.3 - 1.8 depending on a distance from the pump in terms of number of storage tanks), due to non fluid mixing logic, when I want to switch to different fluid as I design the base and other stuff.

What is even weirder, when you see the tanks adjacent to pumps, directly attached to, are empty, if I remove the pumps, the tanks sometimes fill up again a little.
Last edited by movax20h on Mon Nov 25, 2019 11:53 am, edited 2 times in total.

movax20h
Fast Inserter
Fast Inserter
Posts: 164
Joined: Fri Mar 08, 2019 7:07 pm
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by movax20h »

valneq wrote:
Sun Nov 24, 2019 11:02 pm
The Wiki says about the fluid system:
Wiki wrote: All connected tanks and pipes are treated as a single vessel in that the level of fluid must be equal in all parts, to even out pressure exacted by a higher fluid level on smaller ones. This is why level is also often referred to as pressure, even though pressure is actually caused by a difference in level between two entities. All flow of fluid that happens between pipes is to achieve this balance (pumps practically ignore it and buildings disrupt it; more on that further below). The flow rate between pipes is dependent on pressure (the difference in level between the adjacent entities), it becomes slower as pipes even their levels out.
Further down in the same article it also says
Wiki wrote: If a pipe section becomes too long without using pumps, all fluid inside it will be "spread thin", resulting in very slow flow and preventing machines to use its contents effectively. Tanks behave the same as pipes, except their volume is much greater, which can cause this inconvenience over a much smaller distance if multiple tanks are used.
In your pictures, you can see that the tanks immediately connected to tanks are in fact empty. I am certain that you will see the ones immediately connected to them are almost empty. With the difference being small, the flow rate from the almost empty one to the totally empty one will be just very small. This continues deeper into the bulk of your array. The deeper you are in the array, the smaller the exponent in the exponential decay will be. But it should still be exponential.
Yes, that is my point. I know the storage tanks directly connected to pumps are zero. That is why I said "storage tank ARRAY" does not empty. Yes, the tanks further away from the pump are almost empty, with progressively more fluid left as we go further away from the pump unit. It kind of grows linearly I think (the progression is: 0.0, 0.3, 0.5, 0.8, 1.0, 1.3, 1.5, 1.8; which to me looks like linear increases by 0.25 then rounded to nearest 0.1). But eventually the pump stops and flows/pumps zero liquid, and the tanks content will not change. My point about "exponentially" draining, was for the pump to continue slower and slower, and eventually all tanks going to 0.0 exactly. The problem is in the storage tank balancing. The pump is connected to the tank that is empty, so it can't pump anything. Yet, the one attached to the pump shouldn't be actually empty, because the storage tank array has still some oil as whole, and differences (albeit small) in liquid levels should theoretically even out instead. One of the possibilities to fix this is to allow storage tank liquid content to go internally a bit below zero (negative), which would indicate that it is being actively drained, and that could be used by other adjacent tanks to transfer to it, or something.
I believe the only fast way to really empty a storage tank is to have a pump pumping directly attached to the tank. I think you will not get around deconstructing the storage tanks, if you want them to empty out in an acceptable timeframe.
Well, yes, I figured it out, and I do find it annoying. But I think the second part is not correct. I did leave these pumps there almost forever, and the storage tank array reaches equilibrium with no new fluid moving between storage tanks. It will remain non-empty forever. That is my entire point. I am fine with it going slower and slower, to squeeze last drops down to 0.0 (which makes sense, in real world you will also get voids, residues, uneven levels, gravity not distributing fluid perfectly, especially if it is viscous fluid, etc), but please get there eventually (can be many minutes or maybe even hour, I am fine with that).

PS. Citing a Wiki can explain how it works, but it doesn't solve the issue. It is still annoying limitation, even if has good game play effects, it also has annoying side effects. I also don't think the game itself make it clear how and why fluid and storage tanks do that. Requiring to study wiki to understand fundamentals of fluid in the Factorio, might be a sign of another issue with the game.

Ever more weird is that removing pumps, or some storage tanks, the liquid levels in some storage tanks will actually go up. Even above the 1.8. Which doesn't make intuitive sense to me at all.

User avatar
Klonan
Factorio Staff
Factorio Staff
Posts: 5148
Joined: Sun Jan 11, 2015 2:09 pm
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by Klonan »

Yea this is mostly a known issue with the fluid system

The fix is pretty much a big rewrite of the fluid logic

movax20h
Fast Inserter
Fast Inserter
Posts: 164
Joined: Fri Mar 08, 2019 7:07 pm
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by movax20h »

Klonan wrote:
Mon Nov 25, 2019 10:02 am
Yea this is mostly a known issue with the fluid system

The fix is pretty much a big rewrite of the fluid logic
Ack.

coppercoil
Filter Inserter
Filter Inserter
Posts: 470
Joined: Tue Jun 26, 2018 10:14 am
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by coppercoil »

I'd say this is not a game bug. Normal things are easy to fix, crazy things are hard to fix, this is ok. If engineer has build crazy structure that causes maintenence problems, this is engineer's responsibility, not game dev's. There's no need to have such amount of tanks even for OP's described goals. Of course, the player has freedom to build anything, thereby receiving good or bad results according to its own decisions. There are much more ways to break things, e.g. by mixing belt contents by accident and spreading the mix out for tens of chunks. It's not fun to clean up all belts, but who is an engineer here?

movax20h
Fast Inserter
Fast Inserter
Posts: 164
Joined: Fri Mar 08, 2019 7:07 pm
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by movax20h »

coppercoil wrote:
Mon Nov 25, 2019 1:21 pm
I'd say this is not a game bug. Normal things are easy to fix, crazy things are hard to fix, this is ok. If engineer has build crazy structure that causes maintenence problems, this is engineer's responsibility, not game dev's. There's no need to have such amount of tanks even for OP's described goals. Of course, the player has freedom to build anything, thereby receiving good or bad results according to its own decisions. There are much more ways to break things, e.g. by mixing belt contents by accident and spreading the mix out for tens of chunks. It's not fun to clean up all belts, but who is an engineer here?
Things being hard to fix doesn't make them non-bugs. Bug is a bug. Whatever it will be resolved as low priority, or too hard to solve fully, is another thing, but it will remain a bug / issue.

Cleaning up belt is easy without needing to destroy all your belts, assemblers, undergrounds, inserters, and splitter. I think you made a very silly analogy that doesn't correspond to the problem here. Making mistakes is normal, and everybody will do them, no matter the level of the knowledge, and game should not punish you too much, beyond what is necessary to fix it, for your mistakes. It is easy to mix belts (misplaced belt, wrong splitter filter, lack of inventory space, etc), and it happens all the time to everybody, but it is easy to fix too. Not so much with the storage tanks example. It doesn't serve the game play purpose or adds any challenge to the logistic of your base, layout, pipes, or anything. It is just annoyance.
If engineer has build crazy structure that causes maintenence problems, this is engineer's responsibility, not game dev's.
Depends at what cost. It is normal to build crazy structures in Factorio and experiment with setups. But one small mistake of letting bad fluid into your pipes or storage tank arrays, and you basically need to tear down everything and build from scratch. If the piping system is big, this might be a real and unproportional punishment to the player, especially a beginner.

User avatar
MEOWMI
Filter Inserter
Filter Inserter
Posts: 307
Joined: Wed May 22, 2019 12:21 pm
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by MEOWMI »

The only real way to empty tanks is by using pumps. Unfortunately, this doesn't work easily with your setup, because the pump has to be connected directly to the tank and any tanks connected by other means will suffer from the residual issue.

You could use bots and blueprints to rebuild the tank clusters but that's not very automated and in general kinda ugly. Rebuilding the design to include pumps between tanks is also an option, which would be a less compact layout but fix the issue and allow for far higher flow rates, though you might have to deal with residual in pipes as well.

I feel like the best solution from a game design standpoint is to just have a lower cap on flow rates, so it's at least something like 1/s or 5/s instead of becoming arbitrarily small. That's unless there already are plans to do a major rewrite of the flow mechanics.

movax20h
Fast Inserter
Fast Inserter
Posts: 164
Joined: Fri Mar 08, 2019 7:07 pm
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by movax20h »

MEOWMI wrote:
Mon Nov 25, 2019 5:39 pm
The only real way to empty tanks is by using pumps. Unfortunately, this doesn't work easily with your setup, because the pump has to be connected directly to the tank and any tanks connected by other means will suffer from the residual issue.

You could use bots and blueprints to rebuild the tank clusters but that's not very automated and in general kinda ugly. Rebuilding the design to include pumps between tanks is also an option, which would be a less compact layout but fix the issue and allow for far higher flow rates, though you might have to deal with residual in pipes as well.

I feel like the best solution from a game design standpoint is to just have a lower cap on flow rates, so it's at least something like 1/s or 5/s instead of becoming arbitrarily small. That's unless there already are plans to do a major rewrite of the flow mechanics.
I did of course use bots and blueprint to deconstruct the whole thing, because really that was the only option. I did remove some extra connection and pipes that also still had fluid, and constructed it back using bots. I needed to wait for the full deconstruction to finish tho, otherwise storage tanks will fill back with some small residual of the old fluid. The issue is that if you also have belts, other machinery and maybe orthogonal pipes for different fluids, you will disrupt them for moment unnecessarily. Or at least I do not know how to deconstruct only a part of a selection. I know you can make a blueprint with Alt-B and shift drag, but that will only create a blueprint with whitelisted stuff, not remove/deconstruct anything from the map.

Certainly adding pumps, etc would "fix" the issue, but how one is supposed to know to do that before first experiencing this problem, possibly hours or days later only? Plus it is less efficient just to handle corner case of "just in case I need to empty this stuff".

I think the best temporary option, is to have a mod that sporadically goes over all storage tanks and pipes and if they have less than 0.1% of liquid present, simply resets it to zero or halves, until it reaches 0.0. Call it evaporation or something. :) Or a mod utility, where you can select area on the map, and it will simply remove (vanish) all the fluids from all fluid containers. Kind of a hack, but it would work. Non vanilla but still. Another more hard to do would be to allow mixing of fluids, and they would fight :D, but that would break so many other things and would be hard to fix.

For now I will simply wait for the current series of fluid fixes to reach 0.17 / 0.18, and see if things improve.

netmand
Filter Inserter
Filter Inserter
Posts: 302
Joined: Wed Feb 22, 2017 1:20 am
Contact:

Re: [0.17.79] Can't empty storage tanks arrays to zero.

Post by netmand »

I wouldn't worry about the residual fluid left in the container. That's just the way it works. It's like trying to suck out the last few drops out of that can of soda... it can be done but it's really a waste of time and effort. So yeah you can connect a pump to every tank to empty them all out to zero, but I'm guessing that would be just as annoying?

Locked

Return to “Minor issues”