Time Variables
Time Options
Routing simulations have four different time steps, all given in seconds.
dt_routing: The routing computation step, dt in the Muskingum equation. The only one you need to specify.dt_runoff: Interval between runoff inputs. If you don't provide it, it will be identified when the runoff file is opened.dt_discharge: Interval over which to average discharge to write to disc. Must be greater than or equal todt_runoff.dt_total: Total simulation duration.
The most important time step is dt_routing. All other time steps are derived from this and the runoff inputs.
The following rules apply:
- You must route each runoff increment at least 1 time so
dt_routingmust be less than or equal todt_runoff. dt_routingmust be an integer divisor ofdt_runoffbecause runoff distributions won't be resampled.dt_dischargemust be an integer multiple ofdt_runoffbecause discharge outputs are averaged over runoff intervals.dt_totalis equal todt_runoffmultiplied by the number of runoff time steps. Recession routing is not available.
Router Defaults
Muskingum: requiresdt_totalanddt_routing;dt_dischargedefaults todt_routing.RapidMuskingumandUnitMuskingum:dt_runoffdefaults to the runoff-file timestep.dt_dischargedefaults todt_runoff.dt_totaldefaults todt_runoff * number_of_timesteps.dt_routingdefaults todt_runoff.
Required Relationships
For transform routers (RapidMuskingum, UnitMuskingum):
dt_total >= dt_discharge >= dt_runoff >= dt_routing
dt_total % dt_discharge == 0
dt_discharge % dt_runoff == 0
dt_runoff % dt_routing == 0
dt_total == dt_runoff * number_of_timesteps
For channel-only Muskingum:
dt_total >= dt_discharge >= dt_routing
dt_total % dt_discharge == 0
dt_discharge % dt_routing == 0
Practical Notes
dt_routingshould be chosen for numerical stability and performance, not just convenience.- If you need a different runoff timestep, resample runoff before routing.
- To route longer than your runoff record, pad runoff with zeros upstream of routing.
Left- vs right-aligned timestamps
Runoff timestamps can represent interval starts (left-aligned) or interval ends (right-aligned).
Example: an hourly value labeled 17:00 may represent either 17:00-18:00 or 16:00-17:00.
Keep this convention consistent to avoid off-by-one timing errors.