Skip to content

Units and time

The API returns quantities in the model's configured project units. Read flowUnits from await simulation.info() before choosing configuration values, controls, or interpreting results.

Unit families

Quantity US projects (Cfs, Gpm, Mgd) SI projects (Cms, Lps, Mld)
Flow Configured flow unit Configured flow unit
Length, elevation, hydraulic depth ft m
Hydraulic surface area, ponded area ft²
Hydraulic volume and routing totals ft³
Velocity ft/s m/s
Subcatchment land area acres hectares
Rainfall, infiltration, seepage rate in/hour mm/hour
Subcatchment evaporation rate in/day mm/day
Snow depth, depression storage, runoff-depth totals in mm
Durations with a Seconds suffix seconds seconds

Fractions and slopes are ratios, not percentages. imperviousFraction: 0.4 means 40%, and slope: 0.01 means 1%. Continuity errors and percentComplete are percentages. Pollutant concentrations and loads use the native model units described in the API records.

Model timestamps

ModelTime is a timezone-free string in YYYY-MM-DDTHH:mm:ss form. It names a point in the model's calendar, not a UTC instant. Do not append Z or pass it to Date unless your application has chosen an explicit timezone interpretation.

info() provides startTime, endTime, and reportStart. status() provides currentTime, elapsed and duration seconds, and completion from 0 to 100. currentTime can be null when no result time exists. Use elapsedSeconds for numeric progress.

JavaScript uses numeric seconds for observation intervals and runtime durations. It does not accept Python timedelta values. Observation intervals must be positive 32-bit whole seconds. Some model timing options still allow fractional seconds when the native option accepts them.

Three independent cadences

Cadence API Purpose
Routing options.update({ routingStepSeconds }) Configure the solver's routing step; native routing may use smaller steps
Observation steps({ seconds, strict }) or stride(seconds, strict) Decide when control returns to the application
Reporting options.update({ reportStepSeconds }) Configure saved report periods in binary output

strict defaults to true. An exact observation interval can shorten the final routing step to hit its boundary and may change numerical results. Pass strict: false explicitly to advance whole routing steps until the interval is reached or exceeded. Omitting seconds observes every routing step, and the strict flag has no effect.