49#ifndef OPENSWMM_ENGINE_DATA_MSX_SURFACE_DATA_HPP
50#define OPENSWMM_ENGINE_DATA_MSX_SURFACE_DATA_HPP
177 std::size_t
pidx(
int lu,
int m)
const noexcept {
178 return static_cast<std::size_t
>(lu) *
static_cast<std::size_t
>(
n_species) +
179 static_cast<std::size_t
>(m);
189 std::size_t
bu_idx(
int sc,
int lu,
int m)
const noexcept {
190 return (
static_cast<std::size_t
>(sc) *
static_cast<std::size_t
>(
n_landuses) +
191 static_cast<std::size_t
>(lu)) *
193 static_cast<std::size_t
>(m);
202 std::size_t
sidx(
int sc,
int m)
const noexcept {
203 return static_cast<std::size_t
>(sc) *
static_cast<std::size_t
>(
n_species) +
204 static_cast<std::size_t
>(m);
221 const auto n =
static_cast<std::size_t
>(nlu) *
static_cast<std::size_t
>(nm);
223 bu_c1.assign(n, 0.0);
224 bu_c2.assign(n, 0.0);
225 bu_c3.assign(n, 0.0);
233 mcf.assign(
static_cast<std::size_t
>(nm), 1.0);
234 if (
c_rain.size() !=
static_cast<std::size_t
>(nm))
235 c_rain.assign(
static_cast<std::size_t
>(nm), 0.0);
236 snow_only.assign(
static_cast<std::size_t
>(nm),
false);
251 const auto nm =
static_cast<std::size_t
>(
n_species);
252 buildup.assign(
static_cast<std::size_t
>(nsc) *
static_cast<std::size_t
>(
n_landuses) * nm,
254 washoff_conc.assign(
static_cast<std::size_t
>(nsc) * nm, 0.0);
256 ponded_qual.assign(
static_cast<std::size_t
>(nsc) * nm, 0.0);
259 if (
init_loading.size() !=
static_cast<std::size_t
>(nsc) * nm)
260 init_loading.assign(
static_cast<std::size_t
>(nsc) * nm, 0.0);
Definition ExchangeLaw.hpp:60
Resolved MSX surface-quality parameters and state.
Definition MsxSurfaceData.hpp:98
std::vector< double > washoff_conc
Definition MsxSurfaceData.hpp:121
MsxSurfaceRows rows
parse-time, by name
Definition MsxSurfaceData.hpp:99
std::vector< double > bu_max_days
derived (99.9 % of max)
Definition MsxSurfaceData.hpp:109
std::vector< double > mcf
D-A27: MG → UCF(MASS), UG → /1000, else 1.
Definition MsxSurfaceData.hpp:117
std::vector< double > washoff_conc_old
Definition MsxSurfaceData.hpp:126
std::vector< double > led_ponded_lost
ponded mass written off when a surface dried
Definition MsxSurfaceData.hpp:159
bool active() const noexcept
Test whether resolved MSX surface state has at least one species.
Definition MsxSurfaceData.hpp:168
std::vector< double > led_buildup
net accrual over the run
Definition MsxSurfaceData.hpp:151
std::vector< double > led_init_buildup
Definition MsxSurfaceData.hpp:150
std::vector< int > wo_type
0=NONE,1=EXP,2=RC,3=EMC
Definition MsxSurfaceData.hpp:110
int n_species
MSX species count at resolve time.
Definition MsxSurfaceData.hpp:102
std::vector< double > bu_c3
EXT: c3 = time-series index.
Definition MsxSurfaceData.hpp:107
std::vector< double > led_bmp_removal
Definition MsxSurfaceData.hpp:154
std::vector< double > ponded_qual
Definition MsxSurfaceData.hpp:131
std::size_t sidx(int sc, int m) const noexcept
Calculate a subcatchment-major species matrix index.
Definition MsxSurfaceData.hpp:202
void resize_state(int nsc)
Replace MSX subcatchment state and continuity ledgers with zero arrays.
Definition MsxSurfaceData.hpp:249
std::vector< double > led_subcatch_load
[sc * n_species + m], per-subcatchment total (report)
Definition MsxSurfaceData.hpp:161
std::vector< double > led_infil_loss
infiltrated from ponded water and LID units
Definition MsxSurfaceData.hpp:156
int n_subcatch
Definition MsxSurfaceData.hpp:103
int n_landuses
Definition MsxSurfaceData.hpp:101
std::vector< double > led_reacted
signed wet-pool reaction loss, user mass
Definition MsxSurfaceData.hpp:157
std::vector< double > c_rain
Definition MsxSurfaceData.hpp:136
std::size_t bu_idx(int sc, int lu, int m) const noexcept
Calculate a subcatchment/land-use/species buildup index.
Definition MsxSurfaceData.hpp:189
std::vector< double > led_reaction_clamped
numerical addition after a negative RATE
Definition MsxSurfaceData.hpp:158
std::vector< double > runon_qual_rate
Definition MsxSurfaceData.hpp:132
void resize_params(int nlu, int nm)
Replace resolved MSX buildup/washoff parameter matrices.
Definition MsxSurfaceData.hpp:218
std::vector< double > lid_rmvl
Definition MsxSurfaceData.hpp:143
std::vector< bool > snow_only
Definition MsxSurfaceData.hpp:137
std::vector< double > wo_expon
Definition MsxSurfaceData.hpp:111
std::vector< double > bu_c2
Definition MsxSurfaceData.hpp:107
std::vector< double > lid_drain_runon_load
[sc * n_species + m] the species twin of SubcatchData::lid_drain_runon_qual.
Definition MsxSurfaceData.hpp:147
std::vector< double > led_runoff_load
delivered to the network
Definition MsxSurfaceData.hpp:152
std::vector< double > lid_drain_load_old
Definition MsxSurfaceData.hpp:145
std::size_t pidx(int lu, int m) const noexcept
Calculate a land-use-major parameter matrix index.
Definition MsxSurfaceData.hpp:177
std::vector< double > led_wet_deposition
rainfall concentration × rain volume
Definition MsxSurfaceData.hpp:155
std::vector< double > led_sweeping
Definition MsxSurfaceData.hpp:153
std::vector< double > bu_c1
Definition MsxSurfaceData.hpp:107
std::vector< double > init_loading
Definition MsxSurfaceData.hpp:114
std::vector< int > bu_type
0=NONE,1=POW,2=EXP,3=SAT,4=EXT
Definition MsxSurfaceData.hpp:106
bool resolved
Definition MsxSurfaceData.hpp:163
std::vector< int > bu_normalizer
0=PER_AREA, 1=PER_CURB
Definition MsxSurfaceData.hpp:108
std::vector< double > wo_sweep_effic
Definition MsxSurfaceData.hpp:111
std::vector< double > buildup
bu_idx(sc, lu, m), per normalizer unit
Definition MsxSurfaceData.hpp:120
std::vector< double > wo_bmp_effic
Definition MsxSurfaceData.hpp:111
std::vector< double > lid_drain_load
Definition MsxSurfaceData.hpp:144
std::vector< double > wo_coeff
Definition MsxSurfaceData.hpp:111
Definition MsxSurfaceData.hpp:60
std::string ts_name
EXT: time series name (resolved later)
Definition MsxSurfaceData.hpp:64
std::string species
Definition MsxSurfaceData.hpp:61
double c1
Definition MsxSurfaceData.hpp:63
double c2
Definition MsxSurfaceData.hpp:63
std::string landuse
Definition MsxSurfaceData.hpp:61
int normalizer
0=PER_AREA, 1=PER_CURB
Definition MsxSurfaceData.hpp:65
int func_type
0=NONE,1=POW,2=EXP,3=SAT,4=EXT
Definition MsxSurfaceData.hpp:62
double c3
Definition MsxSurfaceData.hpp:63
Definition MsxSurfaceData.hpp:72
std::string subcatch
Definition MsxSurfaceData.hpp:73
std::string species
Definition MsxSurfaceData.hpp:73
double value
initial buildup, mass per unit area
Definition MsxSurfaceData.hpp:74
Definition MsxSurfaceData.hpp:67
double sweep_effic
Definition MsxSurfaceData.hpp:70
std::string landuse
Definition MsxSurfaceData.hpp:68
double coeff
Definition MsxSurfaceData.hpp:70
std::string species
Definition MsxSurfaceData.hpp:68
double bmp_effic
Definition MsxSurfaceData.hpp:70
double expon
Definition MsxSurfaceData.hpp:70
int func_type
0=NONE,1=EXP,2=RC,3=EMC
Definition MsxSurfaceData.hpp:69
Rows parked by the section handlers for names that are not pollutants.
Definition MsxSurfaceData.hpp:59
std::vector< Buildup > buildup
Definition MsxSurfaceData.hpp:76
bool empty() const noexcept
Test whether all deferred MSX buildup/washoff/loading row lists are empty.
Definition MsxSurfaceData.hpp:83
std::vector< Loading > loadings
Definition MsxSurfaceData.hpp:78
std::vector< Washoff > washoff
Definition MsxSurfaceData.hpp:77