60#ifndef OPENSWMM_2D_INFIL2D_HPP
61#define OPENSWMM_2D_INFIL2D_HPP
184 std::vector<Infil2DDefault>&
defaults() noexcept {
return defaults_; }
185 const std::vector<Infil2DDefault>&
defaults() const noexcept {
return defaults_; }
186 std::vector<Infil2DOverride>&
overrides() noexcept {
return overrides_; }
187 const std::vector<Infil2DOverride>&
overrides() const noexcept {
return overrides_; }
237 bool active() const noexcept {
return active_; }
244 const std::vector<Infil2DRow>&
resolvedRows() const noexcept {
return resolved_; }
247 const std::vector<Infil2DProvenance>&
provenance() const noexcept {
return prov_; }
256 const std::vector<double>&
cumulative() const noexcept {
return cum_depth_; }
266 std::vector<Infil2DDefault> defaults_;
267 std::vector<Infil2DOverride> overrides_;
270 bool active_ =
false;
271 double step_seconds_ = 0.0;
275 bool aquifer_2d_available_ =
false;
278 std::vector<Infil2DRow> resolved_;
279 std::vector<Infil2DProvenance> prov_;
280 std::vector<double> cum_depth_;
284 std::vector<infil::HortonState> horton_;
285 std::vector<infil::GreenAmptState> grnampt_;
286 std::vector<infil::CurveNumState> curvenum_;
Infiltration models — Horton, Green-Ampt, SCS Curve Number.
Owns per-cell infiltration parameters, kernel state and held rates.
Definition Infil2D.hpp:181
const Infil2DOptions & options() const noexcept
Definition Infil2D.hpp:189
const std::vector< Infil2DDefault > & defaults() const noexcept
Definition Infil2D.hpp:185
Infil2DOptions & options() noexcept
Definition Infil2D.hpp:188
const std::vector< Infil2DOverride > & overrides() const noexcept
Definition Infil2D.hpp:187
const std::vector< double > & cumulative() const noexcept
Definition Infil2D.hpp:256
void reset()
Clear everything back to the unconfigured fast path.
Definition Infil2D.cpp:379
std::vector< Infil2DDefault > & defaults() noexcept
Definition Infil2D.hpp:184
bool aquifer2DAvailable() const noexcept
Definition Infil2D.hpp:217
const std::vector< Infil2DProvenance > & provenance() const noexcept
Provenance per triangle (D-I3, for the writer).
Definition Infil2D.hpp:247
void deactivate() noexcept
Definition Infil2D.hpp:241
const std::vector< Infil2DRow > & resolvedRows() const noexcept
Resolved method per triangle; has_method == false entries are NONE.
Definition Infil2D.hpp:244
std::vector< Infil2DOverride > & overrides() noexcept
Definition Infil2D.hpp:186
bool resolve(const MeshData &mesh, const SimulationOptions &opts, std::string &err)
Resolve tag/override precedence into flat per-cell state.
Definition Infil2D.cpp:206
void updateRates(const MeshData &mesh, SurfaceStateData &state, double dt)
Recompute and publish per-cell infiltration rates (D-I1).
Definition Infil2D.cpp:331
bool active() const noexcept
True when at least one cell resolved to a model.
Definition Infil2D.hpp:237
void setAquifer2DAvailable(bool on) noexcept
G1 — tell validation that a [2D_AQUIFER] resolved, so the AQUIFER_2D destination has somewhere to sen...
Definition Infil2D.hpp:216
double stepSeconds() const noexcept
Definition Infil2D.hpp:260
Definition NodeCoupling.cpp:16
bool parseInfil2DMethod(const std::string &token, InfilModel &method, bool &has_method)
Definition Infil2D.cpp:141
@ NONE
Definition SolverOptions2D.hpp:115
@ TAG
every cell carrying tag
Definition GwTransportData.hpp:69
const char * infil2DDestToken(Infil2DDest dest)
Inverse of parseInfil2DDest.
Definition Infil2D.cpp:181
bool parseInfil2DDest(const std::string &token, Infil2DDest &dest)
Parse a destination token.
Definition Infil2D.cpp:174
Infil2DDest
Definition Infil2D.hpp:91
@ AQUIFER_2D
The two-zone 2D kernel (G1 step 11b)
Definition Infil2D.hpp:94
@ SUBCATCH_AQUIFER
Legacy subcatchment aquifer (U3 track I-b)
Definition Infil2D.hpp:93
@ LOST
Leaves the domain; booked to MassBalance2D::infil_out.
Definition Infil2D.hpp:92
Infil2DProvenance
Definition Infil2D.hpp:156
@ OVERRIDE
From a per-cell [2D_INFILTRATION] row.
Definition Infil2D.hpp:160
@ STAR
From the '*' default row.
Definition Infil2D.hpp:158
int infil2DParamCount(InfilModel method)
Definition Infil2D.cpp:190
const char * infil2DMethodToken(const Infil2DRow &row)
Inverse of parseInfil2DMethod — the canonical file token.
Definition Infil2D.cpp:161
constexpr int kInfil2DMaxParams
Definition Infil2D.hpp:99
Definition NodeCoupling.cpp:16
InfilModel
Definition Infiltration.hpp:45
@ HORTON
Definition Infiltration.hpp:46
All SWMM simulation options parsed from [OPTIONS] section.
Definition SimulationOptions.hpp:166
Definition Infil2D.hpp:136
std::string tag
Definition Infil2D.hpp:137
Infil2DRow row
Definition Infil2D.hpp:138
[2D_INFILTRATION_OPTIONS].
Definition Infil2D.hpp:148
double infil_step
Definition Infil2D.hpp:151
One [2D_INFILTRATION] per-cell override row.
Definition Infil2D.hpp:142
int tri
Triangle index (0-based internally; 1-based in file)
Definition Infil2D.hpp:143
Infil2DRow row
Definition Infil2D.hpp:144
One infiltration specification: method + positional parameters + destination.
Definition Infil2D.hpp:120
bool dest_explicit
Definition Infil2D.hpp:131
double p[kInfil2DMaxParams]
Definition Infil2D.hpp:125
bool has_method
Definition Infil2D.hpp:123
Infil2DDest dest
Definition Infil2D.hpp:126
InfilModel method
Definition Infil2D.hpp:124
SoA storage for 2D mixed triangle/quad mesh geometry and topology.
Definition MeshData.hpp:67
Definition SurfaceStateData.hpp:59