Advance one species family's buildup/sweeping/washoff and pre-LID complete-mix concentration.
- Parameters
-
| [in,out] | ctx | Prepared runoff subcatchment water/coverage/unit/geometry and table state. Writes shared per-subcatchment washoff_vout1 ft3 when sized, and may advance external-buildup table lookup cursor. Native water arrays themselves and engine calendar are not advanced. |
| [in,out] | b | Borrowed family arrays with n species, nlu landuses: bu/wo params nlu*n; buildup n_subcatch*nlu*n; conc/ponded/runon rate n_subcatch*n; mcf/rain/snow flags and each used ledger n. Optional co_pollut/co_frac pair, reacted ponded mass/mask, LID-reactor mask and sweeping triple follow the Block field contracts. Required pointers remain nonnull even with no landuses when their fields are accessed; all counts/products/indices and finite parameters must already qualify. |
| [in] | dt_runoff | Positive finite accepted runoff duration s; buildup time converted to days. |
| [in] | old_runoff_time | Finite elapsed runoff interval start s, converted from start_date to absolute DateTime for external-buildup time series. |
- Note
- n<=0 returns. Uses area-normalized project land area/curb length, dry/snow buildup gates, planned sweeping before washoff, EMC/exponential/rating laws and buildup donor cap. Mixes native rain/runon/old ponded water over non-LID area, books infiltration/BMP/deposition and closes stored mass with legacy concentration-depth or optional reacted residual-mass policy. Adds LID-footprint rain/full-cover runon only when no explicit LID reactor owns it; single forward co-pollutant pass adds generated buildup load after all species. Wet deposition runs even without landuses.
Water flow ft3/s, rainfall/infiltration ft/s, depths ft and volumes ft3; concentration mass uses 28.317 L/ft3, ledgers/total buildup use mcf conversion to declared user mass, age/thermal species are not generic pollutant mass here. Writes b.conc as native mass/L over pre-LID dilution volume; post-LID runoff load booking is separate and must follow the hydraulic LID update once. No global ignore_quality guard here: caller gates family eligibility. Updates arrays/ledgers progressively with no rollback or complete shape/finite validation. Declared noexcept means an unexpected dependency/allocation exception terminates; exclusive family/context/table-cursor use and accepted-step chronology required, no physical reaction kinetics executed here.
Buildup, washoff and the washoff concentration for one runoff step (legacy surfqual_getBuildup + surfqual_getWashoff). Runs before the LID units; writes subcatches.washoff_vout1 (shared by every family).