In HEC-RAS 2D, every computational cell stores a set of
property tables — precomputed lookup curves that
relate water surface elevation to hydraulic properties such as
plan-view area, wetted volume, and hydraulic radius. Rather than
recomputing these integrals at every time step, the solver performs
a fast table lookup, dramatically reducing run times for
high-resolution meshes.
Property tables are generated once during mesh pre-processing.
A typical 2D area with 50,000 cells at 10×10 sub-cell resolution
precomputes 50 million elevation samples — work that pays off
across thousands of solver time steps.
What Are Sub-cell Samples?
Each computational cell is subdivided into a regular grid of
sub-cells (commonly 10×10 = 100 points). The underlying
terrain elevation (from the DEM) is sampled at every sub-cell
centroid. These 100 elevation values are then sorted and accumulated
to build the elevation–area–volume curve for that cell.
This approach captures terrain variability within a cell
that would otherwise be lost if only the cell-centroid elevation were
used. Narrow channels, road crests, and levee crowns that fall inside
a cell are preserved in the property table even when the mesh is
coarse.
Why It Matters
Volume conservation — storage computed from
sub-cell terrain is far more accurate than using a single
representative elevation per cell.
Solver stability — smooth, monotonically
increasing volume curves prevent numerical oscillations during
wetting and drying transitions.
Performance — O(1) table lookup replaces
repeated integration, enabling large 2D domains to run in
minutes rather than hours.
Terrain Sub-cell Sampling
The animation below shows how a single 2D cell is decomposed into
a 10×10 sub-cell grid, sampled across the terrain, and then
reorganized into an elevation histogram — the first step toward
building the full property table.
Phase 1 — Terrain blocks rise to reveal the DEM surface.
Phase 2 — Sub-cell grid is sampled (flash sweep).
Phase 3 — Blocks fly to their elevation bin.
Phase 4 — Axes and labels appear.
Phase 5 — Water surface rises over both panels.
Phase 6 — Histogram transitions to the cumulative distribution function (CDF).
Notice the high-ground ridge running diagonally across this cell.
Because the property table reduces the terrain to a one-dimensional
elevation–volume curve, it captures how much ground is at
each elevation but not where that ground is located. The
solver does not see the ridge as a connected barrier — water will
flow through it. Blocking features like levees and ridges are
instead handled by face property tables, which
sample the terrain along each cell boundary (see below).
Face Cross-Section Sampling
While cell property tables describe storage (volume vs. elevation),
face property tables describe conveyance — the
cross-sectional area available for flow across a cell boundary. HEC-RAS
cuts a station-elevation profile along each face, then integrates the
open area as a function of water surface elevation to build the
area–elevation lookup curve used by the 2D solver.
Phase 1 — Terrain blocks rise to reveal the DEM surface.
Phase 2 — East–west face line appears between rows 4–5.
Phase 3 — Station-elevation profile draws progressively.
Phase 4 — Hold for readability.
Phase 5 — Profile morphs into the area–elevation CDF.
Phase 6 — Water surface rises over both panels.
Cell-to-Cell Water Transfer
The profile below shows a side view of two adjacent 2D cells
connected through a shared face (levee). Water flows from the
higher-WSEL cell to the lower one whenever the average water
surface elevation at the face exceeds the levee crest.
Drag the vertical sliders on the left (Cell A)
and right (Cell B) to set each cell's water surface elevation.
The flow arrow, velocity, and area–elevation chart update in
real time.
Face WSEL algorithm (ported from HEC-RAS C#):
evaluates dry-cell checks, wet-disconnected, levee, backfill, and
downhill (deep/intermediate/shallow) cases. The values panel on the
right shows every intermediate variable in real time. FaceValues
can be disjoint — each cell may see a different WSEL at the
shared face (e.g. levee overtopping).
Table Structure
Each cell's property table is stored as a list of
(elevation, area, volume) triplets. Elevations are spaced
at the sub-cell bin width (0.5 m by default), covering the full
range from the lowest sub-cell terrain point to the cell's maximum
inundation level.
During the simulation, the solver interpolates linearly between
table rows to find area and volume at any water surface elevation
(WSE). The inverse lookup (WSE given a target volume) uses the same
table traversed in reverse — essential for the implicit solver's
Newton iterations.
The plan area increases steeply between 10–12 m as low-lying
sub-cells are inundated, then plateaus near 100 m² once the entire
cell face is wet. Volume grows as the integral of area with respect
to depth.
Sub-cell resolution trade-offs
Coarser sub-grid (5×5) — faster pre-processing,
less memory, but coarser terrain representation.
Finer sub-grid (20×20) — sharper volume curves,
better wetting-front accuracy, at the cost of 4× more pre-compute.
The default 10×10 is the HEC-RAS recommended balance for most
engineering applications.