An important problem in terrain analysis is modeling how water flows across a terrain creating floods by forming channels and filling depressions. In this article, we study a number of flow-query -related problems: Given a terrain Σ, represented as a triangulated xy -monotone surface with n vertices, and a rain distribution R that may vary over time, determine how much water is flowing over a given vertex or edge as a function of time. We develop internal-memory as well as I/O-efficient algorithms for flow queries. This article contains four main algorithmic results: (i) An internal-memory algorithm for answering terrain-flow queries: Preprocess Σ into a linear-size data structure so given a rain distribution R , the flow-rate functions of all vertices and edges of Σ can be reported quickly. (ii) I/O-efficient algorithms for answering terrain-flow queries. (iii) An internal-memory algorithm for answering vertex-flow queries: Preprocess Σ into a linear-size data structure so given a rain distribution R , the flow-rate function of a vertex under the single-flow direction (SFD) model can be computed quickly. (iv) An efficient algorithm that, given a path 𝖯 in Σ and flow rate along 𝖯 , computes the two-dimensional channel along which water flows. Additionally, we implement a version of the terrain-flow query and 2D channel algorithms and examine a number of queries on real terrains.