Predicting floods caused by the rise of the sea level is a critical task for preventing large scale catastrophes. Such predictions can potentially be made using a forecast of the sea level and a detailed model of the terrain. However, since available terrain datasets can easily exceed the size of the main memory of a standard computer, I/O (rather than internal computation time) can often become the bottleneck when computing such predictions. Thus to perform predictions efficiently we need an I/O-efficient approach, which minimizes the transfer of data blocks between main memory and disk. Given a terrain raster T and a sea-level forecast raster S of N cells each, we examine the problem of computing the water level of the induced flood for each cell in T . We introduce an I/O-efficient algorithm for this problem that uses O((N/B) log M/B (X/B)) I/Os after O((N/B) log M/B (N/B)) I/Os of preprocessing, where X is the number of local minima in T , and M and B are the size of main memory and data block, respectively. When X < M (which holds in practice) our algorithm requires optimal O(N/B) I/Os after preprocessing. We have implemented our algorithm and put considerable effort into engineering it. We present experiments that illustrate the efficiency and practicality of the algorithm, which is so efficient that work is underway to incorporate our results in the forecast services of the Danish Meteorological Institute.