|
| std::vector< Infil2DDefault > & | defaults () noexcept |
| | Borrow the authored ordered star/tag fallback rows.
|
| |
| const std::vector< Infil2DDefault > & | defaults () const noexcept |
| | Borrow the authored ordered star/tag fallback rows.
|
| |
| std::vector< Infil2DOverride > & | overrides () noexcept |
| | Borrow the authored ordered per-cell overrides.
|
| |
| const std::vector< Infil2DOverride > & | overrides () const noexcept |
| | Borrow the authored ordered per-cell overrides.
|
| |
| Infil2DOptions & | options () noexcept |
| | Borrow the authored infiltration cadence options.
|
| |
| const Infil2DOptions & | options () const noexcept |
| | Borrow the authored infiltration cadence options.
|
| |
| bool | resolve (const MeshData &mesh, const SimulationOptions &opts, std::string &err) |
| | Resolve tag/override precedence into flat per-cell state.
|
| |
| void | setAquiferOwners (std::vector< uint8_t > owners) |
| | Effective coverage, not inferred from conductivity or authored rows.
|
| |
| const std::vector< std::string > & | ownershipMessages () const noexcept |
| | Borrow the most recent successful resolution's default-ownership diagnostics.
|
| |
| void | setAquifer2DAvailable (bool on) noexcept |
| | G1 — tell validation that a [2D_AQUIFER] resolved, so the AQUIFER_2D destination has somewhere to send its water.
|
| |
| bool | aquifer2DAvailable () const noexcept |
| | Read the stored aquifer-availability fallback flag.
|
| |
| void | updateRates (const MeshData &mesh, SurfaceStateData &state, double dt, surface::InfilBank::Factors factors={1.0, 1.0}) |
| | Recompute and publish per-cell infiltration rates (D-I1).
|
| |
| void | updateRates (const MeshData &mesh, SurfaceStateData &state, double dt, surface::InfilBank::Factors factors, int num_threads) |
| |
| surface::InfilBank & | bank () noexcept |
| | Borrow the canonical mutable per-cell infiltration bank.
|
| |
| bool | active () const noexcept |
| | True when at least one cell resolved to a model.
|
| |
| void | deactivate () noexcept |
| | E2: [2D_OPTIONS] INFILTRATION NO — keep the rows (they still save) but run without infiltration. Called after resolve().
|
| |
| const std::vector< Infil2DRow > & | resolvedRows () const noexcept |
| | Resolved method per triangle; has_method == false entries are NONE.
|
| |
| const std::vector< Infil2DProvenance > & | provenance () const noexcept |
| | Provenance per triangle (D-I3, for the writer).
|
| |
| const std::vector< double > & | cumulative () const noexcept |
| | Cumulative infiltration CAPACITY per triangle (m): the integral of the published rate, without the solver's depth ramp. On a drying cell this exceeds the water actually removed, so it is NOT ledger-consistent with MassBalance2D::infil_out. SurfaceRouter2D::infilCumulative() is the ledger-consistent series and is what the sidecar's infil_cum and the C API's *_get_cum_bulk report; this one is retained as the kernel-side diagnostic.
|
| |
| double | stepSeconds () const noexcept |
| | Resolved cadence in seconds (options_.infil_step, or the project WET_STEP when that was <= 0). Set by resolve().
|
| |
| void | reset () |
| | Clear everything back to the unconfigured fast path.
|
| |
Owns per-cell infiltration parameters, kernel state and held rates.
Lifecycle:
- Parsers fill
defaults(), overrides(), options().
SurfaceRouter2D::initialize() calls resolve() once the mesh (and therefore MeshData::tri_tag) is available.
SurfaceRouter2D calls updateRates() every INFIL_STEP.
- The marcher consumes
SurfaceStateData::infil_rate only.
Empty/unconfigured is the fast path: active() is false and no array is allocated, so a project with no [2D_INFILTRATION*] sections is bitwise identical to the pre-track-I engine (gate I7).
Recompute and publish per-cell infiltration rates (D-I1).
Called on the INFIL_STEP cadence. Advances kernel state for EVERY model-carrying cell, including cells the marcher has deactivated — otherwise a dry cell presents full initial capacity when rain finally arrives (§5.5.2).
Writes state.infil_rate[i] in m/s, >= 0. Conversion: precip/depth SI→ft on the way in, rate ft/s→SI on the way out.
- Parameters
-
| [in] | mesh | Mesh (unused today; kept for symmetry and future area use). |
| [in,out] | state | Surface state — reads rainfall/depth, writes infil_rate. |
| [in] | dt | Elapsed seconds since the previous call (the INFIL_STEP). |
| [in] | factors | Monthly/global InfilBank adjustment factors, dimensionless; defaults are unity. |
- Precondition
- Resolved bank and source/depth/rate arrays have compatible cell extents; ordinary rows use valid project-unit parameters and finite dt.
- Postcondition
- Advances ordinary cell infiltration kernel history and publishes held SI m/s rates for model-carrying nonexternal rows. Aquifer-owned/no-method rows remain for their separate owner; cells beyond min(resolved size, output rate size) are untouched.
- Note
- Inactive or dt <= 0 is a no-op; no explicit NaN dt guard exists. Does not integrate removed surface volume or update mass-balance ledgers. Exclusive bank/output access is required; input pointers are not retained.