v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Difference between revisions of "40d:Water pressure"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
m (→‎Mitigating dangers: coloured in diagram)
 
(46 intermediate revisions by 19 users not shown)
Line 1: Line 1:
The only pressure that Dwarf Fortress attempts to replicate is [http://en.wikipedia.org/wiki/Fluid_statics#Pressure_in_fluids_at_rest hydrostatic '''water pressure'''].
+
{{Quality|Exceptional|10:53, 18 May 2015 (UTC)}}
 +
{{av}}
 +
There are several mechanisms at work that try to simulate '''water pressure''' in game. While on the whole amazingly accurate, there are several unexpected quirks concerning speed and displacement. Never think you are on the safe side, especially when trying to trick the game.
  
In layman's terms, if you have a tall body of water (such as a [[lake]] or a tower you have pumped full of water) then the water at the lowest [[z-level]] is being 'squeezed' by the weight of the water above it. If it is released it will move with remarkable speed and can flow up [[stair]]s, [[ramp]]s, and over [[channel]]s. It will continue flowing until it runs out of space or it fills to a [[z-level]] equal to the source.
+
A [http://www.bay12games.com/forum/index.php?topic=32453.0 technical explanation by Kanddak] from the Bay12 Forum outlines in detail what is known of the in-game fluid mechanics from player testing.
  
Dwarf Fortress does not model surface friction nor air pressure, so the water will not slow in transit nor will 'trapped air bubbles' form. Magma does not have pressure (it cannot flow up, and doesn't appear to move at greater speeds).
+
==Hydrostatic water pressure==
 +
Dwarf Fortress attempts to replicate [http://en.wikipedia.org/wiki/Fluid_statics#Pressure_in_fluids_at_rest hydrostatic water pressure].
 +
 
 +
This is probably one of the most prominent components, as Toady discussed it at length in an interview with [http://www.gamasutra.com/view/feature/3549/interview_the_making_of_dwarf_.php?page=10 gamasutra].
 +
 
 +
In layman's terms, if you have a body of water that is higher than an open space below it (such as a tall tower full of water and a hose from it, or a [[lake]] over a mine), and an open route between them, then the water at the lowest [[z-level]] will be 'pressed' by the weight of the water above it.
 +
 
 +
As a simple model, think of a pipe shaped like a "J". If you pour water in the taller end of the pipe, it will come "up" out of the lower end until the water levels on both sides are equal.  If you put your thumb over the lower end and fill the taller end, then release your thumb, the water will move with remarkable speed, and water will continue to come "up" out that lower end until all the water in the taller part is at the same level as the lower part.  This is one part of Dwarf Fortress "water pressure" -  that if the source is higher, water can come up [[stair]]s, up [[ramp]]s, and over [[channel]], and will continue flowing until it runs out of space or runs out of water above it.
 +
 
 +
Note that DF water pressure does not ''exactly'' match natural hydrostatic water pressure - it fills to a [[z-level]] ''one level lower'' than the source.  (This is for reasons of CPU time-saving, as stated by [[Main:Toady|Toady]]; the game stops not when all ends of the system are on the same level, but when the far levels are one-lower than the source.) The above behaviour does only apply to finite water sources like murky pools, artificially created reservoirs and any body of water connected to an infinite water source only diagonally. More to the point, it applies always, but is in many cases not the final mechanism causing equilibrium.
 +
 
 +
== Pressure from infinite water sources ==
 +
Different from the above, a river that pushes water into a tunnel system will fill it up to the z-level of the river itself, but not higher (again, unless only connected by diagonal flow, see below).
 +
 
 +
When the water source is a [[river]] which is allowed to drain off the edge of the map, the final Z-level will never fill - however, if a [[dam]] prevents the river from draining, it will continue to fill up to its own Z-level.
 +
 
 +
== Other/Missing mechanisms==
 +
Dwarf Fortress does not model surface friction nor air pressure, so the water will not slow in transit nor will 'trapped air bubbles' form. Unless pumped, magma does not have pressure (it cannot flow up, and doesn't appear to move at greater speeds).
 +
 
 +
As can be expected, if water is continuously pushed into a room, either by an unlimited water source like a river or by means of a [[pump]], the water will not stop when the room is filled, but search for an outlet, even on higher z-levels. If there is an outlet, but it can not take all the water coming in, the water will look for further outlets.
 +
 
 +
It's possible for dwarf-built [[pump]]s to pick liquid up and lift it higher, possibly back to the source and thus creating a closed cycle. Beware that operating pumps obey the same pressure rules as infinite water sources, capable of pushing both water '''and''' magma down through tunnels and back up to the original Z-level of the pump's output tile.
  
 
== Dangers ==
 
== Dangers ==
 
 
It is easy to flood your fortress accidentally by not accounting for water pressure. For example:
 
It is easy to flood your fortress accidentally by not accounting for water pressure. For example:
* It is safe to dig out a [[cistern]] one level below a murky pool, and to channel above a few tiles of the [[cistern]] so that your dwarves can get water from it without having to go outside.  
+
* It is safe to dig out a [[cistern]] one level below a murky pool, and to channel above a few tiles of the [[cistern]] so that your dwarves can get water from it without having to go outside.
 
* It is safe to refill a murky pool with water from a pump or brook/river/etc on the same level.
 
* It is safe to refill a murky pool with water from a pump or brook/river/etc on the same level.
 
* It is not safe to do both to the same pool! The water from the pump/brook/river/whatever will fill the pool to 7/7, and will then pressurize the water in the [[cistern]], which will then flow up out of your channels and flood your fort.
 
* It is not safe to do both to the same pool! The water from the pump/brook/river/whatever will fill the pool to 7/7, and will then pressurize the water in the [[cistern]], which will then flow up out of your channels and flood your fort.
 +
 +
===Waterfalls===
 +
Waterfalls are of special concern.  If you tap river section ''downstream'' from a waterfall, the water will be under additional pressure as it is coming from above the river's surface. It is absolutely critical to reduce the pressure in such a system if you do not wish flooding, the easiest way being diverting the water diagonally - although if used solely for a complex drowning trap or other purpose, flooding may be desirable.
  
 
== Mitigating dangers ==
 
== Mitigating dangers ==
 +
=====Diagonal Flow=====
 +
Obviously the game treats water connected only by a diagonal tile as ''not'' connected in terms of "pressure" but ''only'' in terms of "diffusion". A common adaption of this behaviour is feeding water through a diagonal tile "to take the pressure out": 
 +
 +
Pressure cannot push water through diagonal gaps between tiles - instead, it will merely flow through if the water level on the other side is low enough.
 +
 +
'''Top View'''<br />
 +
                ######
 +
        #########<font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font>########
 +
  <font color="blue">'''Direction->'''</font> <font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font>#<font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font> <font color="#2FB6FF">-></font>
 +
  <font color="blue">'''  of    ->''' </font><font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font>#<font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font> <font color="#2FB6FF">-></font>
 +
  <font color="blue">'''  Flow  ->'''</font> <font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font><font color="blue">≈</font>#<font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font><font color="#2FB6FF">≈</font> <font color="#2FB6FF">-></font>
 +
        ###########<font color="#2FB6FF">≈</font>#########
 +
                  ###<br />
 +
  # = wall, constructed or undug
 +
  <font color="blue">≈</font> = pressurized water
 +
  <font color="#2FB6FF">≈</font> = neutral/normal water pressure
 +
 +
This does not work on a vertical basis - water only travels vertically to a different z-level, never diagonally. 
 +
 +
A result of this is that a tunnel system that spans several z-levels, but is connected to a river only by a diagonal tile, will fill only to one z-level lower than the river, but if an orthogonal connection is created, it will fill up another level.
 +
 +
If you wish to maintain the rate of flow after de-pressurizing, it's recommended that you have more diagonals than water tiles - that is, if the source is 3-tiles wide, you may wish 4 or more diagonal passages.
 +
 
=====Hatches=====
 
=====Hatches=====
[[Hatch]]es can be placed over [[channel]]s, [[stair]]s, [[ramp]]s etc to prevent [[water]] moving vertically but still allow the tile to be used, even as a water source (and possibly still for fishing too).
+
[[Hatch]]es can be placed over [[channel]]s, [[stair]]s, [[ramp]]s etc. to prevent [[water]] moving vertically but still allow the tile to be used, even as a water source (and possibly still for fishing too).
 +
 
 
=====Pumps=====
 
=====Pumps=====
When water is passed through [[pump]]s it loses all of its pressure. Of course, there is a downside - you still have to run the pumps and due to the source water's pressure the pump must be [[power]]ed instead of [[pump operator|run by a dwarf]] (the tile the dwarf needs to stand on is filled by water). Furthermore the power cannot transmitted by a [[gear]] placed next to the pump, because the water will simply flow down the passage the gear comes from!
+
Water pressure does not propagate through pumps, so it is possible to fill a pool using a screw pump without it having the same pressure as its source. Of course, there is a downside - you still have to run the pumps and due to the source water's pressure, the pump must be [[power]]ed instead of [[pump operator|run by a dwarf]], as the tile the dwarf needs to stand on is filled by water. Furthermore, the pump will likely need to be powered from above or below (as water would simply flow around a gear or axle placed next to the pump), though creative setups are still possible by using additional screw pumps to transmit power.
  
Your vertical [[axle]]s or gear assemblies need to be placed above the unwalkable tile of the pump, and there must not be a channel over the walkable pump tile. (Water can only flow straight upward, not up and to the side at the same time)
+
Your vertical [[axle]]s or gear assemblies need to be placed above the unwalkable tile of the pump, and there must not be a channel over the walkable pump tile. (Water can only flow straight upward, not up and to the side at the same time.) Multiple adjacent pumps will also [[Power#Power transfer|transfer power]] between themselves automatically.
  
 
  Side view
 
  Side view
Line 25: Line 74:
 
       ↓    ↓↓↓↓↓      # = Normal wall
 
       ↓    ↓↓↓↓↓      # = Normal wall
 
  ######<font color="brown">║</font>###<font color="blue">#</font><font color="blue"><b>≈≈≈≈≈</b></font>      <font color="blue">#</font> = Wall that pressurised water would flow into if it were to be dug out
 
  ######<font color="brown">║</font>###<font color="blue">#</font><font color="blue"><b>≈≈≈≈≈</b></font>      <font color="blue">#</font> = Wall that pressurised water would flow into if it were to be dug out
  ######<font color="brown">║</font>###<font color="blue">##</font><font color="blue"><b>≈≈≈≈</b></font>      <font color="#2FB6FF">≈</font> = Regular water
+
  ######<font color="brown">║</font>####<font color="blue">#</font><font color="blue"><b>≈≈≈≈</b></font>      <font color="#2FB6FF">≈</font> = Regular water
 
  _ ___#<font color="brown">║</font><font color="blue">#######</font><font color="blue"><b>≈≈</b></font>      <font color="blue"><b>≈</b></font> = Pressurised water
 
  _ ___#<font color="brown">║</font><font color="blue">#######</font><font color="blue"><b>≈≈</b></font>      <font color="blue"><b>≈</b></font> = Pressurised water
 
  #<font color="#2FB6FF">≈≈≈≈≈</font><font color="green"><b>%%</b></font><font color="blue"><b>≈≈≈≈≈≈≈≈</b></font>      <font color="green"><b>%%</b></font> = Pump
 
  #<font color="#2FB6FF">≈≈≈≈≈</font><font color="green"><b>%%</b></font><font color="blue"><b>≈≈≈≈≈≈≈≈</b></font>      <font color="green"><b>%%</b></font> = Pump
  ######<font color="blue">##</font><font color="blue"><b>≈</b></font><font color="blue">#######</font>      <font color="brown">║</font> = Axle
+
  #######<font color="blue">#</font><font color="blue"><b>≈</b></font><font color="blue">#######</font>      <font color="brown">║</font> = Axle
  #######<font color="blue">###</font>######      _ = Floor
+
  ########<font color="blue">#</font>#######      _ = Floor
  
== Theory ==
+
Do note that the water output from the screw pump '''will''' be pressurized according to the "infinite water source" behavior, but said pressure will be independent of the source and can be subsequently 'reset' by additional pumps or diagonal gaps.
  
What follows here are several rules which specify how water pressure affects water's behavior. These were written to fit experimentally observed behavior as best as possible. (There used to be two models here, but the second one couldn't be reconciled with the observed results of the water-overpressure-in-river experiment, though the first also had to be extensively rewritten. The chief problem with the second one was that it was essentially "water pressure in a 7/7 water tile is determined by the difference in z-level between it and the highest 7/7 water tile it's connected to," and that pressure wasn't something to be transmitted between tiles. This would mean an entire river overpressurized should overflow along the entire river length simultaneously. It didn't.)
+
== Overall behavior ==
  
===Current best pressure model===
+
* If a tile contains water which is floating on top of another tile of 7/7 water (and apparently only if there is no water above it{{verify}}), the water in the upper Z-level will be pushed downward and moved to the nearest orthogonal (not diagonal) tile on the lowest available Z-level, up to the Z-level just below the top. Each tile of liquid performs this check once every few steps. This type of pressure applies only to water, and is what causes large bodies of water multiple Z-levels deep to rapidly drain when opened.
 +
* If a liquid source (river/brook source, underground river waterfall tile, map edge, or [[screw pump]] output) attempts to create liquid in its output tile but cannot due to it being full already, the liquid will be created in the nearest orthogonal (not diagonal) tile on the lowest available Z-level, up to the ''same'' Z-level as the source. This applies to both water and magma, and can be observed by damming a river.
 +
* Liquids adjacent (both orthogonally and diagonally) to non-full tiles will flow into them and average their depths, pushing lightweight objects and creating flow (which will power [[water wheel]]s) if the depth difference was 2 or more.
  
Note: this may not be correct.  See [http://www.gamasutra.com/view/feature/3549/interview_the_making_of_dwarf_.php?page=9] and [http://www.gamasutra.com/view/feature/3549/interview_the_making_of_dwarf_.php?page=10] for info from Toady.
+
See [http://www.gamasutra.com/view/feature/3549/interview_the_making_of_dwarf_.php?page=9] and [http://www.gamasutra.com/view/feature/3549/interview_the_making_of_dwarf_.php?page=10] for more info from Toady.
 
 
# Water normally has 0 pressure.
 
# If a water source (including pumps) attempts to create water in its output tile but cannot due to it being full already, it will pressurize the output tile (it remains pressure 0, but this allows it to pressurize the tile below it and give it pressure 1).
 
# Water sources attempt to generate water in tiles adjacent to pressurized tiles. They will not generate water in tiles above pressurized tiles unless the water source has '''nowhere''' else to generate '''any''' water, and they will never generate water above the water source's z-level.
 
# The amount of water generated per tick does NOT appear to increase as the radius of the water blob increases. Water being generated on two z-levels at once has been observed to generate faster on the lower level, but it is unclear if this actually means that lower levels have more water generated, or if some other factor was at work.
 
# For water sources, seemingly random valid pressurized tiles are chosen to generate water at each tick. However, tiles closer to the source are preferred (This may or may not be due to how pressurization spreads?).
 
# The pressurization state spreads from a tile to adjacent, above, or below tiles only if both are 7/7, and only if the pressurized tile has no tiles adjacent, above, or below itself which it could generate water in.
 
# Pressure which is transmitted downward is increased by 1. 7/7 water which falls and remains 7/7 also increases in pressure {{verify}}.
 
# Pressure which is transmitted upward is decreased by 1.
 
# Tiles with 0 pressure can be considered 'pressurized' for the purpose of generating water (they have no speed bonus).
 
# Pumps do not transmit pressure. Water which comes out of pumps has 0 pressure. (Note that you must ensure that output water does not contact input water, or pressure WILL be transmitted through the connection)
 
# Water tiles which drop below 7/7 density become 0 pressure and unpressurized.
 
# Pressure makes water moves faster, with each level of pressure seemingly providing greater speed.
 
# Falling water which falls onto 7/7 water acts as a 'source' (but is destroyed when its water is re-created elsewhere).
 
 
 
===Anomalies===
 
* If you drop a fixed amount of water several levels down a shaft into another room, you can end up with more water than you started with. {{version|0.27.169.33g}}
 
* Pumps can turn into seemingly infinite water generators (though they can be stopped by blocking their input with a hatch, or by disconnecting their power).{{version|0.27.169.33g}} The above model currently appears to match this behavior if pumps are considered water sources. Perhaps pumps are not removing water from their input if they are unable to put water in the output, but they still generate water elsewhere as a source? {{verify}}
 
* A "u-bend bug" has been reported, which generates infinite amounts of water due to the source of the pressure not being properly drained. {{version|0.27.176.38a}}
 
  
 
===Movies of pressure experiments===
 
===Movies of pressure experiments===
 +
* [http://mkv25.net/dfma/movie-283-grandwaterpressureexperiment] - Showing that pumps output 0-pressure water even from a high-pressure source, that water will not flow up and to the side at the same time (has to flow straight up), and a few other things
 
* [http://mkv25.net/dfma/movie-284-firstwaterpressureexperimentreproduced] - Showing that pressure is not transmitted through non-7/7 tiles.
 
* [http://mkv25.net/dfma/movie-284-firstwaterpressureexperimentreproduced] - Showing that pressure is not transmitted through non-7/7 tiles.
* [http://mkv25.net/dfma/movie-283-grandwaterpressureexperiment] - Showing that pumps output 0-pressure water even from a high-pressure source, that water will not flow up and to the side at the same time (has to flow straight up), and a few other things
+
* [http://mkv25.net/dfma/movie-285-waterpressureinriverexperiment] - Pump turned into infinite water generator, but still provided useful information on how overpressure causes upward flooding. The infinite water generation behavior has since been fixed.
* [http://mkv25.net/dfma/movie-285-waterpressureinriverexperiment] - Pump turned into infinite water generator, but still provided useful information on how overpressure causes upward flooding.
 
 
* [http://mkv25.net/dfma/movie-288-waterpressureexperiment4] - Uses three pumps connected to different tunnel layouts to test a few of these rules: One tunnel has three accessible z-levels. The second tunnel has one accessible z level and periodic shafts up. The third has only one accessible z level with no shafts. The bottom level of all three filled first, and the shafts did not fill until the bottom was filled. The second level of the three-high tunnel did not begin filling until the first was full. They did not all fill the bottom at once, but this is believed to be due to the order in which their pumps are placed on the river.
 
* [http://mkv25.net/dfma/movie-288-waterpressureexperiment4] - Uses three pumps connected to different tunnel layouts to test a few of these rules: One tunnel has three accessible z-levels. The second tunnel has one accessible z level and periodic shafts up. The third has only one accessible z level with no shafts. The bottom level of all three filled first, and the shafts did not fill until the bottom was filled. The second level of the three-high tunnel did not begin filling until the first was full. They did not all fill the bottom at once, but this is believed to be due to the order in which their pumps are placed on the river.
  
Line 67: Line 99:
 
* Have a pump pumping water into a 3-wide tunnel with a 1-wide tunnel below it. Have another pump pumping water into a 1-wide tunnel with a 3-wide tunnel below it. Observe whether the bottom tunnel's water spreads faster in both cases or just in the smaller tunnel.
 
* Have a pump pumping water into a 3-wide tunnel with a 1-wide tunnel below it. Have another pump pumping water into a 1-wide tunnel with a 3-wide tunnel below it. Observe whether the bottom tunnel's water spreads faster in both cases or just in the smaller tunnel.
 
* From a pump, fill a cistern which is several levels lower. Shut off the pump and the higher level tiles with hatches once the whole thing is 7/7. Open other hatches above the cistern, combine water with unpressurized water, and see what happens.
 
* From a pump, fill a cistern which is several levels lower. Shut off the pump and the higher level tiles with hatches once the whole thing is 7/7. Open other hatches above the cistern, combine water with unpressurized water, and see what happens.
 +
* Determine how much "drainage" is required to handle the output of a single, fully flowing pump.
 +
* Confirm whether water "flow" is slowed by diagonal vs. [[orthogonal]] passages.  Develop some numbers for portioning water flow into smaller amounts, that can be handled by single-tile sized drains.
 +
 +
== See Also==
 +
:* [[flow]]
 +
:* [[flood]]ing
 +
:* [[magma]]
 +
:* [[water]]
 +
:* [[pump]]
 +
:* [[fun]]
  
 
{{Water FAQ}}
 
{{Water FAQ}}
  
[[Category:Physics]]
+
{{Category|Physics}}

Latest revision as of 20:29, 23 June 2017

This article is about an older version of DF.

There are several mechanisms at work that try to simulate water pressure in game. While on the whole amazingly accurate, there are several unexpected quirks concerning speed and displacement. Never think you are on the safe side, especially when trying to trick the game.

A technical explanation by Kanddak from the Bay12 Forum outlines in detail what is known of the in-game fluid mechanics from player testing.

Hydrostatic water pressure[edit]

Dwarf Fortress attempts to replicate hydrostatic water pressure.

This is probably one of the most prominent components, as Toady discussed it at length in an interview with gamasutra.

In layman's terms, if you have a body of water that is higher than an open space below it (such as a tall tower full of water and a hose from it, or a lake over a mine), and an open route between them, then the water at the lowest z-level will be 'pressed' by the weight of the water above it.

As a simple model, think of a pipe shaped like a "J". If you pour water in the taller end of the pipe, it will come "up" out of the lower end until the water levels on both sides are equal. If you put your thumb over the lower end and fill the taller end, then release your thumb, the water will move with remarkable speed, and water will continue to come "up" out that lower end until all the water in the taller part is at the same level as the lower part. This is one part of Dwarf Fortress "water pressure" - that if the source is higher, water can come up stairs, up ramps, and over channel, and will continue flowing until it runs out of space or runs out of water above it.

Note that DF water pressure does not exactly match natural hydrostatic water pressure - it fills to a z-level one level lower than the source. (This is for reasons of CPU time-saving, as stated by Toady; the game stops not when all ends of the system are on the same level, but when the far levels are one-lower than the source.) The above behaviour does only apply to finite water sources like murky pools, artificially created reservoirs and any body of water connected to an infinite water source only diagonally. More to the point, it applies always, but is in many cases not the final mechanism causing equilibrium.

Pressure from infinite water sources[edit]

Different from the above, a river that pushes water into a tunnel system will fill it up to the z-level of the river itself, but not higher (again, unless only connected by diagonal flow, see below).

When the water source is a river which is allowed to drain off the edge of the map, the final Z-level will never fill - however, if a dam prevents the river from draining, it will continue to fill up to its own Z-level.

Other/Missing mechanisms[edit]

Dwarf Fortress does not model surface friction nor air pressure, so the water will not slow in transit nor will 'trapped air bubbles' form. Unless pumped, magma does not have pressure (it cannot flow up, and doesn't appear to move at greater speeds).

As can be expected, if water is continuously pushed into a room, either by an unlimited water source like a river or by means of a pump, the water will not stop when the room is filled, but search for an outlet, even on higher z-levels. If there is an outlet, but it can not take all the water coming in, the water will look for further outlets.

It's possible for dwarf-built pumps to pick liquid up and lift it higher, possibly back to the source and thus creating a closed cycle. Beware that operating pumps obey the same pressure rules as infinite water sources, capable of pushing both water and magma down through tunnels and back up to the original Z-level of the pump's output tile.

Dangers[edit]

It is easy to flood your fortress accidentally by not accounting for water pressure. For example:

  • It is safe to dig out a cistern one level below a murky pool, and to channel above a few tiles of the cistern so that your dwarves can get water from it without having to go outside.
  • It is safe to refill a murky pool with water from a pump or brook/river/etc on the same level.
  • It is not safe to do both to the same pool! The water from the pump/brook/river/whatever will fill the pool to 7/7, and will then pressurize the water in the cistern, which will then flow up out of your channels and flood your fort.

Waterfalls[edit]

Waterfalls are of special concern. If you tap river section downstream from a waterfall, the water will be under additional pressure as it is coming from above the river's surface. It is absolutely critical to reduce the pressure in such a system if you do not wish flooding, the easiest way being diverting the water diagonally - although if used solely for a complex drowning trap or other purpose, flooding may be desirable.

Mitigating dangers[edit]

Diagonal Flow[edit]

Obviously the game treats water connected only by a diagonal tile as not connected in terms of "pressure" but only in terms of "diffusion". A common adaption of this behaviour is feeding water through a diagonal tile "to take the pressure out":

Pressure cannot push water through diagonal gaps between tiles - instead, it will merely flow through if the water level on the other side is low enough.

Top View
###### ################# Direction-> # -> of -> # -> Flow -> # -> #################### ###
# = wall, constructed or undug = pressurized water = neutral/normal water pressure

This does not work on a vertical basis - water only travels vertically to a different z-level, never diagonally.

A result of this is that a tunnel system that spans several z-levels, but is connected to a river only by a diagonal tile, will fill only to one z-level lower than the river, but if an orthogonal connection is created, it will fill up another level.

If you wish to maintain the rate of flow after de-pressurizing, it's recommended that you have more diagonals than water tiles - that is, if the source is 3-tiles wide, you may wish 4 or more diagonal passages.

Hatches[edit]

Hatches can be placed over channels, stairs, ramps etc. to prevent water moving vertically but still allow the tile to be used, even as a water source (and possibly still for fishing too).

Pumps[edit]

Water pressure does not propagate through pumps, so it is possible to fill a pool using a screw pump without it having the same pressure as its source. Of course, there is a downside - you still have to run the pumps and due to the source water's pressure, the pump must be powered instead of run by a dwarf, as the tile the dwarf needs to stand on is filled by water. Furthermore, the pump will likely need to be powered from above or below (as water would simply flow around a gear or axle placed next to the pump), though creative setups are still possible by using additional screw pumps to transmit power.

Your vertical axles or gear assemblies need to be placed above the unwalkable tile of the pump, and there must not be a channel over the walkable pump tile. (Water can only flow straight upward, not up and to the side at the same time.) Multiple adjacent pumps will also transfer power between themselves automatically.

Side view
                      
    Power  Water      Key
      ↓    ↓↓↓↓↓      # = Normal wall
##########≈≈≈≈≈      # = Wall that pressurised water would flow into if it were to be dug out
###########≈≈≈≈       = Regular water
_ ___########≈≈       = Pressurised water
#≈≈≈≈≈%%≈≈≈≈≈≈≈≈      %% = Pump
###############       = Axle
################      _ = Floor

Do note that the water output from the screw pump will be pressurized according to the "infinite water source" behavior, but said pressure will be independent of the source and can be subsequently 'reset' by additional pumps or diagonal gaps.

Overall behavior[edit]

  • If a tile contains water which is floating on top of another tile of 7/7 water (and apparently only if there is no water above it[Verify]), the water in the upper Z-level will be pushed downward and moved to the nearest orthogonal (not diagonal) tile on the lowest available Z-level, up to the Z-level just below the top. Each tile of liquid performs this check once every few steps. This type of pressure applies only to water, and is what causes large bodies of water multiple Z-levels deep to rapidly drain when opened.
  • If a liquid source (river/brook source, underground river waterfall tile, map edge, or screw pump output) attempts to create liquid in its output tile but cannot due to it being full already, the liquid will be created in the nearest orthogonal (not diagonal) tile on the lowest available Z-level, up to the same Z-level as the source. This applies to both water and magma, and can be observed by damming a river.
  • Liquids adjacent (both orthogonally and diagonally) to non-full tiles will flow into them and average their depths, pushing lightweight objects and creating flow (which will power water wheels) if the depth difference was 2 or more.

See [1] and [2] for more info from Toady.

Movies of pressure experiments[edit]

  • [3] - Showing that pumps output 0-pressure water even from a high-pressure source, that water will not flow up and to the side at the same time (has to flow straight up), and a few other things
  • [4] - Showing that pressure is not transmitted through non-7/7 tiles.
  • [5] - Pump turned into infinite water generator, but still provided useful information on how overpressure causes upward flooding. The infinite water generation behavior has since been fixed.
  • [6] - Uses three pumps connected to different tunnel layouts to test a few of these rules: One tunnel has three accessible z-levels. The second tunnel has one accessible z level and periodic shafts up. The third has only one accessible z level with no shafts. The bottom level of all three filled first, and the shafts did not fill until the bottom was filled. The second level of the three-high tunnel did not begin filling until the first was full. They did not all fill the bottom at once, but this is believed to be due to the order in which their pumps are placed on the river.

Possible future experiments[edit]

  • Have a pump pumping water into a 3-wide tunnel with a 1-wide tunnel below it. Have another pump pumping water into a 1-wide tunnel with a 3-wide tunnel below it. Observe whether the bottom tunnel's water spreads faster in both cases or just in the smaller tunnel.
  • From a pump, fill a cistern which is several levels lower. Shut off the pump and the higher level tiles with hatches once the whole thing is 7/7. Open other hatches above the cistern, combine water with unpressurized water, and see what happens.
  • Determine how much "drainage" is required to handle the output of a single, fully flowing pump.
  • Confirm whether water "flow" is slowed by diagonal vs. orthogonal passages. Develop some numbers for portioning water flow into smaller amounts, that can be handled by single-tile sized drains.

See Also[edit]