pub fn get_multi_rec<F: Debug + Float + Sync + Into<f64>>(
    map_size_lg: MapSizeLg,
    h: impl Fn(usize) -> F + Sync,
    downhill: &[isize],
    newh: &[u32],
    wh: &mut [F],
    nx: usize,
    ny: usize,
    dx: f64,
    dy: f64,
    _maxh: F,
    threadpool: &ThreadPool
) -> (Box<[u8]>, Box<[u32]>, Box<[[f64; 8]]>)
Expand description

Algorithm for computing multi-receiver flow.

  • map_size_lg: Size of the underlying map.
  • h: altitude
  • downhill: single receiver
  • newh: single receiver stack
  • wh: buffer into which water height will be inserted.
  • nx, ny: resolution in x and y directions.
  • dx, dy: grid spacing in x- and y-directions
  • maxh: maximum |height| among all nodes.

Updates the water height to a nearly planar surface, and returns a 3-tuple containing:

  • A bitmask representing which neighbors are downhill.
  • Stack order for multiple receivers (from top to bottom).
  • The weight for each receiver, for each node.