Streams And Seepage#

This section is the scientific entry point for stream supports, seepage, drainage outflow, and simulation-derived active stream networks.

It sits beside Hydrology and Forcing because these concepts are not only forcing inputs. They are groundwater-surface exchange concepts. Some objects are loaded or generated as geographic supports, some become solver boundary conditions, and some are post-processed interpretations of model outputs.

The organizing idea is simple but important: do not ask “where is the river?” before asking what role the river-like object plays in the model. A line can be an observation, a computational support, a boundary condition, or a diagnostic mask. Those roles should remain separate.

Object Roles#

HydroModPy separates three network roles.

reference

The observed or externally loaded stream network. This is the validation target when comparing simulated activity to hydrography.

generated

A DEM/topography-derived network. It can be useful as a geomorphological diagnostic or as a modelling support, but it is not an observation.

simulated_active

The active network inferred from simulated drainage or seepage fields. It is a result interpretation, not an input network.

For scientific validation of simulated activity, the target is reference. If the run has no reference network, HydroModPy should skip the simulated-active overlap comparison rather than silently falling back to generated.

Method Roles At A Glance#

Role

Question answered

What exists before solve

What exists after solve

Stream boundary

How much water is exchanged against a known surface head?

support and prescribed H_stream

computed q_stream

Seepage / drainage

Where does groundwater emerge at the surface?

support and local z_s

computed outflow_drain or q_seep

Simulated active network

Which connected network is implied by simulated emergence?

positive outflow field and routing graph

accumulation_flux, mask, metrics

Examples That Carry The Explanation#

The section has one dedicated example page:

Use these as the bridge between the concepts and the actual artifacts. They explain which example is best for:

  • choosing between a stream boundary and a seepage/drainage operator;

  • checking the MODFLOW 6 outflow_drain to accumulation_flux path;

  • reading the Nancon MODFLOW 6 K-sweep against the observed reference network;

  • using the MODFLOW-NWT Nancon basin page as a legacy baseline;

  • reading comparison folders in a defensible order.

Concept Map#

The map below is intentionally placed after the reading path and role table. It is a compact implementation view, not the first explanation of the concept.

@startuml
title Streams And Seepage - Concept Map
left to right direction
skinparam componentStyle rectangle
skinparam wrapWidth 180
skinparam maxMessageSize 170

package "External or topographic networks" {
  component "reference stream network\nobserved / loaded linework" as Reference
  component "generated stream network\nDEM-derived linework" as Generated
}

package "Groundwater model supports" {
  component "stream support\ncells/edges carrying imposed stage" as StreamSupport
  component "drainage or seepage support\ncells that can release water" as DrainSupport
  component "surface / mesh topology\nrouting context" as Surface
}

package "Boundary or exchange meaning" {
  component "stream boundary\nprescribed stage/head" as StreamBoundary
  component "seepage/drainage operator\nhead-dependent release" as DrainOperator
}

package "Solver outputs" {
  component "head / water table" as Head
  component "local outflow\noutflow_drain" as Outflow
  component "routed activity\naccumulation_flux" as Accum
}

package "Interpretation products" {
  component "simulated active mask\nthreshold + time rule" as Mask
  component "overlap metrics vs reference" as Overlap
  component "planar distance metrics\ncell centroids vs reference" as Distance
  component "optional future vector role\nhydrographic_network_simulated_active" as Vector
}

Reference --> StreamSupport : possible support source
Generated --> StreamSupport : possible support source
Generated --> DrainSupport : possible support source
StreamSupport --> StreamBoundary
DrainSupport --> DrainOperator
StreamBoundary --> Head
DrainOperator --> Head
Head --> Outflow : activation depends on solved head
Outflow --> Accum : route downstream
Surface --> Accum
Accum --> Mask
Reference --> Overlap
Mask --> Overlap
Reference --> Distance
Mask --> Distance
Mask --> Vector : future contract only

note bottom of StreamBoundary
Stream is currently a stage/head
support in the public model path.
It is not a surface-routing model.
end note

note bottom of DrainOperator
Seepage/drainage is not prescribed
water leaving the model. It activates
when solved head satisfies the release law.
end note
@enduml

The important separation is:

  • stream linework can be an observed object, a generated object, or a support;

  • stream-style boundaries prescribe a stage/head condition;

  • seepage or drainage conditions prescribe a release law controlled by h - z_s;

  • the simulated active network is computed after the groundwater solve.