Can you try adding this to the adjust_prototypes_recursive function between lines 37 and 38 in data-final-fixes.lua to make sure it works how you expect it to?
if type(object) == "table" then
local fbscale = math.sqrt(gtts_time_scale)
if object["pipe_connections"] then
if not object["fluidbox+gtts"] then
object["fluidbox+gtts"] = true
if object["base_area"] then
object["base_area"] = object["base_area"] / fbscale
else
object["base_area"] = 1 / fbscale
end
if object["height"] then
object["height"] = object["height"] * fbscale
else
object["height"] = 1 * fbscale
end
if object["base_level"] then
object["base_level"] = object["base_level"] * fbscale
end
end
end
end
Test tank balancing with 31 pipe pipeline between.
No Scale
fbscale = 1
60 ups : 14.10s
30 ups : 27.86s
120 ups: 7.03s
Full Scale
fbscale = gtts_time_scale
30 ups : 7.96s [1]
120 ups: 1:46.04s
Half Scale
fbscale = (gtts_time_scale - 1) / 2 + 1
30 ups : 15.45s
120 ups: 38.94s
240 ups: 34.06s
Quarter Scale
fbscale = (gtts_time_scale - 1) / 4 + 1
30 ups : 19.38s
120 ups: 19.48s
240 ups: 14.46s
Square Root Scale
fbscale = math.sqrt(gtts_time_scale)
30 ups : 16.75s
120 ups: 46.80s
240 ups: 53.32s
[1] This is double height and half area fluid boxes, and creates a strong oscillation where the source tank goes all the way well below the 12.5k equilibrium with the other tank, and drops to around 1-2k fluid before rising again to around 20k, back and forth until it stabilizes. It feels like there is a PID unwinding a large integral portion.