I was inspired by
The Undergrotto, probably my favorite fortress ever, and I've been thinking about trying something along the same lines. The plan is to create a cavern with an artificial lake in the bottom. What this thread is about is the concept of giving that lake an artificial tide. The lake will be deep (several z-levels), and I want it to automatically rise and lower a few z-levels (maybe 5ish) on a predictable cycle. I know DF liquid physics can be kinda weird, so I thought I'd post my thoughts here and see if anyone with more experience than me sees any major problems. If it matters, I plan on using either the upcoming 40d# version of DF, or if that is not yet available when I start, the old 40d# version.
Simplest version: Water flows into the cavern at a steady rate, let's say a channel 2 squares wide. The drainage channel is larger than the intake channel, 3 squares wide, so in theory, more water is flowing out of the lake than is flowing into the lake, and the water level decreases. Once it reaches a certain low point, it triggers a pressure plate to close off the drainage floodgates, cutting them off entirely. As water is still flowing in, the water level rises. Once the water level rises to a certain point, another pressure plate is triggered, opening up the drainage floodgates. Repeat.
More complex version: Water flows in and out of the lake at a variable rate. To increase the size of the lake, the intake channel is greater than the drainage channel, say a 4 channel wide intake, and a 1 channel wide drain. Once the water reaches a maximum level, a pressure plate is triggered, throttling the intake down to only 1 channel wide, and opening up the drain to 4 channels wide. There is no real justifiable reason to make it more complex, except that I kinda want too. Ideally the water will drain out into a lake or river or something, and the idea of the drainage flow stopping entirely and starting again seems less cool.
Is this conceivably possible? Is there a fixed amount of water that can flow through a channel that is only a single square wide (x amount of water), and does that increase at a fixed predictable rate for wider channels? (a 3 square wide channel would then move 3x water)
Even if this is possible, should I even bother trying it on an average computer, or will I need a Cray to get a framerate that is two digits?