59#ifndef OPENSWMM_ENGINE_2D_SURFACE_TRANSPORT_STATE_HPP
60#define OPENSWMM_ENGINE_2D_SURFACE_TRANSPORT_STATE_HPP
91 int rowIndex(std::string_view name)
const noexcept {
92 for (std::size_t i = 0; i <
row_names.size(); ++i)
93 if (
row_names[i] == name)
return static_cast<int>(i);
165 void resize(
int n_spec,
int n_tri,
int n_coupling_points) {
167 n_cells = (n_tri > 0) ? n_tri : 0;
170 const auto ns =
static_cast<std::size_t
>(
n_species);
175 exch_mass.assign(ns *
static_cast<std::size_t
>(
176 n_coupling_points > 0 ? n_coupling_points
180 n_coupling_points > 0 ? n_coupling_points : 0),
194 std::size_t
idx(
int s,
int c)
const noexcept {
195 return static_cast<std::size_t
>(s) *
static_cast<std::size_t
>(
n_cells) +
196 static_cast<std::size_t
>(c);
204 double dry_volume_m3)
const noexcept {
205 if (!(volume_m3 > dry_volume_m3))
return 0.0;
213 const auto base =
static_cast<std::size_t
>(s) *
214 static_cast<std::size_t
>(
n_cells);
215 for (
int c = 0; c <
n_cells; ++c)
216 m +=
cell_mass[base +
static_cast<std::size_t
>(c)];
217 const auto us =
static_cast<std::size_t
>(s);
Definition NodeCoupling.cpp:16
Definition SurfaceTransportState.hpp:134
double conc
Definition SurfaceTransportState.hpp:134
int slot
Definition SurfaceTransportState.hpp:134
int species
Definition SurfaceTransportState.hpp:134
Definition SurfaceTransportState.hpp:69
std::vector< double > cell_mass
Definition SurfaceTransportState.hpp:100
std::vector< double > lost_boundary
left through an open edge
Definition SurfaceTransportState.hpp:106
std::vector< double > exch_mass
Definition SurfaceTransportState.hpp:111
std::vector< double > rain_conc
Definition SurfaceTransportState.hpp:126
int rowIndex(std::string_view name) const noexcept
Definition SurfaceTransportState.hpp:91
bool active() const noexcept
Definition SurfaceTransportState.hpp:163
std::vector< double > lost_infiltration
left through the bed
Definition SurfaceTransportState.hpp:105
void clear()
Definition SurfaceTransportState.hpp:192
bool signedRow(int s) const noexcept
Definition SurfaceTransportState.hpp:90
int age_row
Definition SurfaceTransportState.hpp:81
std::vector< double > gained_rainfall
Definition SurfaceTransportState.hpp:147
long dispersion_limiter_binds
Definition SurfaceTransportState.hpp:143
std::size_t idx(int s, int c) const noexcept
Definition SurfaceTransportState.hpp:194
double totalIncludingLedgers(int s) const noexcept
Definition SurfaceTransportState.hpp:211
std::vector< double > coupling_src
Definition SurfaceTransportState.hpp:161
int n_cells
Definition SurfaceTransportState.hpp:71
std::vector< double > gained_coupling
Definition SurfaceTransportState.hpp:151
int n_msx
Definition SurfaceTransportState.hpp:80
std::vector< double > bc_conc
Definition SurfaceTransportState.hpp:131
std::vector< double > gained_boundary
Definition SurfaceTransportState.hpp:148
void resize(int n_spec, int n_tri, int n_coupling_points)
Definition SurfaceTransportState.hpp:165
std::vector< double > lost_coupling
Definition SurfaceTransportState.hpp:107
std::vector< std::string > row_names
Definition SurfaceTransportState.hpp:86
int n_pollut
Definition SurfaceTransportState.hpp:79
double concentration(int s, int c, double volume_m3, double dry_volume_m3) const noexcept
Definition SurfaceTransportState.hpp:203
std::vector< double > exch_spill
Definition SurfaceTransportState.hpp:121
int temp_row
Definition SurfaceTransportState.hpp:82
int n_species
rows carried; 0 ⇒ transport is off everywhere
Definition SurfaceTransportState.hpp:70
std::vector< BoundaryQualityRow > bc_quality_rows
Definition SurfaceTransportState.hpp:135