I know density and compactness is not a concern for most because of the vast amount of space you have. But trying to min/max around size and compactness is something that interests me and hopefully a few others. So here I experiment with fluid mixing for oil refining in order to maximize production density. I've included the build process for insight into how this was designed along with explaining a few properties of the fluid network.
Index i. Result ii. Build Process iii. Conclusion
I. Result
Mixed Fluid Design
Link to video of it working.
II. Build Process
- Pump Priming Properties
https://preview.redd.it/flasoocrm8651.png?width=1476&format=png&auto=webp&s=52e025d1cfbcedc38523f3ef67e6ba3d12bfe173
Before delving into the build process, it's important to establish one important behavior of the fluid network. Fluid flows based on the difference between two entities. Ever run into the situation where a pump has a fluid that you don't desire? You can use this behavior to 'prime' pumps with the desired fluid. By maintaining a level of fluid after the pump, you can keep the pump itself filled with the desired fluid by creating 'back pressure'. In the picture above we can see that by maintaining a minimum of 11k fluid using the output pump, the input pump will still be primed with crude oil despite there being a pipe full of water next to it. 11k is the minimum but I recommend 15k for safety.
https://preview.redd.it/7sdz5u4sm8651.png?width=1720&format=png&auto=webp&s=ea5a7c223c6a87d71333f5f66907cfd855ad4b03
Flow rate decreases with distance. With a lower flow rate, a lower amount of fluid and lower back pressure is required to keep the pumps primed. The picture above shows that 5k is enough to keep the pumps primed with oil and the system uncontaminated with water.
https://preview.redd.it/oyg2epbsm8651.png?width=1420&format=png&auto=webp&s=189dc891d29daa8f793ab189c849618a70ab895e
But if the pump is sufficiently enough away and not enough fluid maintained, there isn't enough back pressure to keep the pump primed and the system is contaminated.
- Fluid Sorting Device
https://preview.redd.it/wb6s9fvsm8651.png?width=993&format=png&auto=webp&s=101d54dd7994eb08e683de6afc5d3fab8997021a
With the pump priming property established, we can create a fluid sorter. The above shows a fluid sorting machine in the bottom left that can sort three fluids. The white area is a temporary auxiliary refinery system that is used to prime the system with the proper fluids (petroleum, light, heavy). The system above is built first keeping the refinery un-designated so that we can connect the system without fluid mixing errors. Run the auxiliary refinery to fill the tanks with all three fluids. First turn on one pump in the fluid sorter using circuitry and then turn on the pump for the desired fluid in the auxiliary system. Turn the auxiliary pump off and then the sorting pump off. Then turn on the second fluid sorter pump and repeat the process. Or you can do all this with the editor and replace the temporary system with an infinity pipe.
https://preview.redd.it/3xg4u96tm8651.png?width=304&format=png&auto=webp&s=1938a7f9e9177e010d678361de115d1b64e8bf01
With the process repeated successfully, you should have three fluids in one network with three pumps primed with the desired fluid ready for fluid sorting.
- Input Single Pipe
https://preview.redd.it/jx8olcrtm8651.png?width=1347&format=png&auto=webp&s=f74dd10b105a521adead9ffceb62724f6e4be82f
Now onto designing the fluid mixing system. Obviously the best way to condense two pipes is to make it one pipe. Here we create a system that pumps oil and water into one pipe. Infinity pipes to destroy the output and the input fluid will be used temporarily until later. The pumps work on a 60 tick cycle where it rests for 10 ticks, then oil pumps for 20 ticks, rests for 10, water for 20 and repeat. We will optimize the clock later. In the system above, we can see that last two are having problems with the input.
https://preview.redd.it/t9yyh44um8651.png?width=2006&format=png&auto=webp&s=7f2de2b0e4bfa72514f24426e70366e23335661a
This was easy enough to fix with the addition of pumps helping the fluid along. One important thing to note here is the exact pump location. If the pump shares a pipe with refinery, the pump can interfere and cause problems. So that one pipe buffer is necessary for smooth operation.
- Output Single Pipe
https://preview.redd.it/90icumgum8651.png?width=1899&format=png&auto=webp&s=754af5101f385a42e9f4489f89ed2995827a3033
The next obvious step is to condense the outputs into one pipe. But there is one important thing to note. As can be seen in the picture above, the refinery on the far left has output blocked. Heavy oil is produced in the lowest quantities and with it in the corner, it has trouble flowing in the desired direction.
https://preview.redd.it/j550ei9vm8651.png?width=1929&format=png&auto=webp&s=d0a037a0594ca601d1cdd869717457b623307281
Therefore, it is required that the output is pumped in the direction of petroleum to heavy. Petroleum has enough quantity to flow and coalesce with the outputs from the other refineries as can be seen in the picture above.
- Beacon and Moduling
https://preview.redd.it/6i774lovm8651.png?width=1395&format=png&auto=webp&s=243595b3256e25bfb7c3a7ee47b26d4902067a41
Next, we add beacons and modules to maximize production. A simple enough step. We can however see that the system is losing some efficiency as the outputs are blocked temporarily. The efficiency loss will be calculated later.
- Quick Input Length Test
https://preview.redd.it/17h1ycxvm8651.png?width=1890&format=png&auto=webp&s=f1171da5ea948a41ce084ff16416017e039a20a2
Now we do a quick test to see how far the input system can handle. The last two barely function. The third from last stop intermittently. We can also see the 5th one having stopped temporarily. We will reduce to 10 for now as its limit and hopefully optimize the system in the next step.
- Input Cycling Optimization
https://preview.redd.it/hy95neftu8651.png?width=711&format=png&auto=webp&s=033bf1b4cc42e9992e120b45be61e4b54efbd1f1
Cycle and cooldown are in ticks while the values in the middle is the production of petroleum. The cooldown is necessary to prevent the system is clogging. We can see that even with the cooldown, the system doesn't lose performance until it reaches a point where the system fails and stops working. We can see that the 120 cycle has the best performance. A cooldown helps prevent the system from clogging. So we'll choose a cycle of 120 ticks and cooldown of 5 ticks from here on out.
- Input sorter and Input Bias Testing
https://preview.redd.it/z24cwo4wm8651.png?width=1614&format=png&auto=webp&s=8170dd7a302fcb86255ea737a4faebe03ae02489
We've been using an infinity pipe temporary to destroy the fluid but that's a waste. So we now implement the fluid sorter mentioned before, and sort our fluid input to pump back into the system. It takes up a lot of space but we'll optimize that later. Note, we actually improve performance significantly in this step from 40k Petroleum per second to 50k petroleum per second. The infinity pipe drained the system too quickly robbing the refineries of resources. The slower input sorter actually helps performance.
Also, with the input system mostly completed, we test if a bias for more oil or water has any effect. But with a small 10 tick bias for more oil, it actually stops the system as it starves the system of water. The system is best set at equal amounts of oil and water.
- Output Length Test
https://preview.redd.it/i0lyjfkwm8651.png?width=1684&format=png&auto=webp&s=3e38bdc42fa7351a9d5ff65d4be61da3b22fdd81
Now we bring back our one pipe fluid output and see how many refineries it can handle. With 5 refineries group, performance drops from 50k petroleum to 32k. A complete failure. With 4 refinery groups, performance dropped from 50k to 46k. Unfortunately, our system will be heavily limited by the output pipe to four refineries in one row.
- Output Fluid Sorter
https://preview.redd.it/ofw2anqwm8651.png?width=980&format=png&auto=webp&s=48cc48a03d3996c82398907a2134959a7e9186d2
Like I showed in the example in the beginning, we implement the fluid sorter to our system. The input sorter is not as fast as the infinity pipe as clearing the system and we take a performance hit to 40k petroleum from 46k. This fluid sorter also takes up a lot of space and limits refineries to four in one row. The input system can handle 8 so we can have 2 rows of 4. We make this in the next step.
- Doubling Rows and Compressing Design
https://preview.redd.it/w8flwbywm8651.png?width=1555&format=png&auto=webp&s=ac000628ee868229aad35f6bb994aaa010882c20
Might have been a big step. But function wise everything is mostly the same. The refineries was flipped so that it outputs to the right. Two rows were created so that both output fluid sorters can be put on the right. The bottom fluid sorter feeds to the top fluid sorter so that the unmixed output fluids have a unified output. The input system first feeds the top row and then routes to the bottom row and returns to the left which conveniently condenses the input system design. Condensing design unfortunately increases the distance between the output sorter and the refineries and can create 0.0 fluid problems. The contraption added to the left of the output fluid sorter fixes this. It creates two paths for the fluids to flow just in case one path is blocked by 0.0 fluid. The blocked path will flow again once the same type fluid is met again. The small grid of pipes allows the same type fluids to condense helping flow and basically works like puzzle bubble.
In the end we came up with a design that takes up 43*23= 989m2 and produces 40k petroleum per second. We saved space by condensing the pipes but the control overhead ended up using more space. In comparison to the conventional beaconed row design this is 13% less production density. Refineries in the mixed oil design use 20% less power which reflects the loss in production and the fact that it's not running at full capacity.
III. Conclusion?
It sucks. Setting it up is absolute cancer, it's impossible to blueprint, it has too much logistical overhead, and it doesn't make logical sense to mix and unmix refined oil products. But I spent too much time on it so I'm posting anyway.
I first made this 2 years ago back in 0.15 hoping to come up with a really compact oil design. I had a rough idea even back then that the design would be a failure. But there was no new editor back then so testing and experimenting was much more difficult and 0.16? removed fluid mixing so I didn't venture much farther and i went on with making a 1kspm base. With 0.18.32, it reintroduced fluid mixing along with having the new editor so it was much easier to test and experiment. I got false hope that perhaps now I could go back with the means to optimize it even more but halfway through I knew it was gonna fail but I kept going because I already spent too much time on it.
Condensing all the inputs and outputs to one pipe saves space. But it's throughput limitations limit the potential space savings and the additional overhead required for managing the system completely negates whatever space you saved. The condensed output's throughput limit to 4 refineries requires two fluid splitters which not only adds to size but severely limits space savings through scale. I've been a big proponent of fluid mixing in the past because of the potential to come up with a compact oil design. Now that I've thoroughly tested it, I think I'm done with it for now.
submitted by
No comments:
Post a Comment