42#ifndef OPENSWMM_LID_HPP
43#define OPENSWMM_LID_HPP
221 const LIDGroupSoA&
group(
int type_index)
const {
return groups_[
static_cast<size_t>(type_index)]; }
222 int numGroups()
const {
return static_cast<int>(groups_.size()); }
263 double rainfall,
double evap_rate);
267 const double* evap_rate,
double dt);
274 const double* evap_rate,
double dt);
278 const double* evap_rate,
double dt);
283 const double* evap_rate,
double dt);
287 const double* evap_rate,
double dt);
291 const double* evap_rate,
double dt);
296 const double* evap_rate,
double dt);
299 std::vector<LIDGroupSoA> groups_;
static void batchGreenRoofFlux(LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
Batch green roof flux rates — VECTORISABLE.
Definition LID.cpp:968
int numGroups() const
Definition LID.hpp:222
void execute(SimulationContext &ctx, double dt, double rainfall, double evap_rate)
Compute LID performance for all units (batch by type).
Definition LID.cpp:1575
static void batchPavementFlux(LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
Batch permeable pavement flux rates — VECTORISABLE.
Definition LID.cpp:1151
static void batchSwaleFlux(LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
Batch vegetative swale flux rates — VECTORISABLE.
Definition LID.cpp:814
static void batchSwaleModPuls(LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
Definition LID.cpp:872
LIDGroupSoA & group(int type_index)
Access a type group (for testing or external queries).
Definition LID.hpp:220
const LIDGroupSoA & group(int type_index) const
Definition LID.hpp:221
static void batchInfilTrenchFlux(LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
Definition LID.cpp:695
double totalInfilVolume() const
Definition LID.cpp:1549
void init(SimulationContext &ctx)
Definition LID.cpp:193
double storedVolume() const
Definition LID.cpp:448
static void batchBioCellFlux(LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
Batch bio-cell flux rates — VECTORISABLE.
Definition LID.cpp:471
double totalInitVolume() const
Definition LID.cpp:1538
static void batchBarrelFlux(LIDGroupSoA &g, double rainfall, double dt)
Batch rain barrel flux rates — VECTORISABLE (simplest)
Definition LID.cpp:605
double totalEvapVolume() const
Definition LID.cpp:1560
double totalStoredVolume() const
Definition LID.cpp:1527
static void batchRoofDisconFlux(LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
Batch roof disconnection flux rates — VECTORISABLE.
Definition LID.cpp:1448
constexpr int STOR
Definition LID.hpp:75
constexpr int SOIL
Definition LID.hpp:74
constexpr int N_LAYERS
Definition LID.hpp:77
LIDType
Definition LID.hpp:58
@ ROOF_DISCON
Definition LID.hpp:66
@ INFIL_TRENCH
Definition LID.hpp:62
@ VEG_SWALE
Definition LID.hpp:65
@ RAIN_BARREL
Definition LID.hpp:64
@ BIO_CELL
Definition LID.hpp:59
@ RAIN_GARDEN
Definition LID.hpp:60
@ GREEN_ROOF
Definition LID.hpp:61
@ PERM_PAVEMENT
Definition LID.hpp:63
constexpr int PAVE
Definition LID.hpp:76
constexpr int SURF
Definition LID.hpp:73
Definition NodeCoupling.cpp:16
Central, reentrant simulation context.
Definition SimulationContext.hpp:353
std::vector< double > soil_wp
Soil wilting point.
Definition LID.hpp:115
double ucf_rainfall
ft/sec → in/hr|mm/hr (RAINFALL)
Definition LID.hpp:92
std::vector< double > pave_void
Pavement void fraction.
Definition LID.hpp:138
std::vector< double > pave_imperv_frac
Impervious fraction of pavement.
Definition LID.hpp:139
std::vector< double > surface_runoff
Definition LID.hpp:165
std::vector< double > soil_thick
Soil thickness (ft)
Definition LID.hpp:112
std::vector< double > wb_evap
Total evaporation volume (ft)
Definition LID.hpp:200
std::vector< int > control_idx
LID control index (into ctx.lid_controls)
Definition LID.hpp:95
std::vector< double > surf_alpha
Surface Manning alpha = sqrt(slope)/n.
Definition LID.hpp:153
std::vector< double > in_surf
External inflow onto the surface.
Definition LID.hpp:187
std::vector< double > pave_regen_days
Pavement regeneration interval (days)
Definition LID.hpp:142
std::vector< int > drain_subcatch
Resolved drain-to subcatch index (-1=none)
Definition LID.hpp:101
std::vector< double > drain_coeff
Drain coefficient.
Definition LID.hpp:128
std::vector< double > drain_hopen
Head to open drain valve (ft)
Definition LID.hpp:132
std::vector< int > drain_node
Resolved drain-to node index (-1=none)
Definition LID.hpp:100
std::vector< double > inflow
Per-unit inflow rate (ft/sec) — set before execute()
Definition LID.hpp:102
std::vector< int > drain_open
Current drain valve state (1=open, 0=closed)
Definition LID.hpp:134
std::vector< double > f_old_stor
Previous storage flux rate.
Definition LID.hpp:195
std::vector< double > drain_hclose
Head to close drain valve (ft)
Definition LID.hpp:133
std::vector< double > drain_expon
Drain exponent.
Definition LID.hpp:129
std::vector< double > wb_surf_flow
Total surface outflow volume (ft)
Definition LID.hpp:202
std::vector< double > pave_thick
Pavement thickness (ft)
Definition LID.hpp:137
std::vector< double > surf_depth
Current surface ponded depth.
Definition LID.hpp:159
std::vector< double > pave_ksat
Pavement saturated K (ft/sec)
Definition LID.hpp:140
std::vector< double > stor_ksat
Storage exfiltration K (ft/sec)
Definition LID.hpp:123
std::vector< double > surf_slope
Surface slope.
Definition LID.hpp:109
std::vector< double > stor_void
Storage void fraction.
Definition LID.hpp:122
std::vector< double > wb_final_vol
Final stored volume (ft)
Definition LID.hpp:205
std::vector< double > subcatch_rain
Parent subcatchment rainfall (ft/sec) — for the rain-barrel dry-time reset (legacy lid....
Definition LID.hpp:104
std::vector< double > soil_kslope
Conductivity slope.
Definition LID.hpp:117
int n_pollutants
Number of pollutants (for indexing drain_rmvl)
Definition LID.hpp:172
std::vector< double > soil_poros
Soil porosity.
Definition LID.hpp:113
std::vector< double > dry_time
Seconds since last rainfall.
Definition LID.hpp:156
std::vector< double > stor_thick
Storage thickness (ft)
Definition LID.hpp:121
std::vector< double > surf_store
Surface storage depth (ft)
Definition LID.hpp:107
std::vector< double > drainmat_thick
Drainage mat thickness (ft)
Definition LID.hpp:147
std::vector< double > soil_ksat
Soil saturated K (ft/sec)
Definition LID.hpp:116
std::vector< double > f_old_surf
Previous surface flux rate.
Definition LID.hpp:193
std::vector< double > drain_flow
Definition LID.hpp:166
std::vector< double > in_stor
Layer above → storage.
Definition LID.hpp:190
void resize(int n)
Definition LID.cpp:86
std::vector< double > wb_infil
Total exfiltration volume (ft)
Definition LID.hpp:201
std::vector< double > wb_init_vol
Initial stored volume (ft)
Definition LID.hpp:204
std::vector< double > f_old_pave
Previous pavement flux rate.
Definition LID.hpp:196
std::vector< double > surf_rough
Surface Manning's n.
Definition LID.hpp:108
std::vector< double > soil_suction
Suction head for Green-Ampt (ft)
Definition LID.hpp:118
std::vector< double > pave_regen_deg
Pavement regeneration degree (0-1)
Definition LID.hpp:143
std::vector< double > full_width
Full width for Manning's flow (ft)
Definition LID.hpp:155
std::vector< double > wb_inflow
Total inflow volume (ft)
Definition LID.hpp:199
std::vector< double > f_old_soil
Previous soil flux rate.
Definition LID.hpp:194
std::vector< double > pave_clog_factor
Pavement clog factor (ft of treated volume)
Definition LID.hpp:141
std::vector< int > stor_covered
1 if rain barrel is covered (blocks rainfall)
Definition LID.hpp:125
std::vector< double > wb_drain_flow
Total drain outflow volume (ft)
Definition LID.hpp:203
std::vector< double > drainmat_rough
Drainage mat Manning's roughness.
Definition LID.hpp:149
std::vector< int > subcatch_idx
Which subcatchment this unit belongs to.
Definition LID.hpp:94
std::vector< double > pave_depth
Current pavement depth.
Definition LID.hpp:162
std::vector< double > stor_depth
Current storage depth.
Definition LID.hpp:161
double ucf_raindepth
ft → in|mm (RAINDEPTH)
Definition LID.hpp:91
std::vector< double > infil_loss
Native infiltration loss this step (ft)
Definition LID.hpp:168
std::vector< double > surf_void_frac
Surface void fraction (default 1.0)
Definition LID.hpp:152
LIDType type
Definition LID.hpp:84
std::vector< double > evap_rate_unit
Per-unit effective PET rate (ft/sec) — filled by execute()
Definition LID.hpp:103
std::vector< double > in_pave
Surface → pavement.
Definition LID.hpp:188
std::vector< int > to_perv
Route surface outflow to pervious area (1=yes)
Definition LID.hpp:99
std::vector< double > drain_delay
Drain delay time (sec, rain barrel)
Definition LID.hpp:131
std::vector< double > area
Unit area (ft2)
Definition LID.hpp:96
std::vector< double > evap_loss
Evaporation loss this step (ft of depth)
Definition LID.hpp:167
int count
Definition LID.hpp:85
std::vector< double > from_perv
Fraction of pervious runoff treated (0-1)
Definition LID.hpp:98
std::vector< double > stor_clog
Storage clogging factor (ft)
Definition LID.hpp:124
std::vector< double > next_regen_day
Next day for pavement regeneration (OADate)
Definition LID.hpp:144
std::vector< double > soil_fc
Soil field capacity.
Definition LID.hpp:114
std::vector< double > in_soil
Layer above → soil.
Definition LID.hpp:189
std::vector< double > surf_side_slope
Swale side slope (run/rise)
Definition LID.hpp:154
std::vector< double > vol_treated
Cumulative volume treated (ft, for clog model)
Definition LID.hpp:206
std::vector< double > drainmat_void
Drainage mat void fraction.
Definition LID.hpp:148
std::vector< double > from_imperv
Fraction of impervious runoff treated (0-1)
Definition LID.hpp:97
std::vector< double > drain_rmvl
Removal fraction per unit per pollutant.
Definition LID.hpp:171
std::vector< double > drain_offset
Drain offset depth (ft)
Definition LID.hpp:130
std::vector< double > soil_moist
Current soil moisture (0-porosity)
Definition LID.hpp:160