![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
G-step 1 — [2D_AQUIFER_OPTIONS], [2D_AQUIFER] and [2D_AQUIFER_NODE]: parsing, unit resolution and writing.
More...
#include "SubsurfaceData.hpp"#include "../../input/SectionRegistry.hpp"#include <string>#include <vector>Go to the source code of this file.
Namespaces | |
| namespace | openswmm |
| namespace | openswmm::twoD |
Functions | |
| std::string | openswmm::twoD::parseAquiferOptionsLine (const std::vector< std::string > &tokens, GwOptions &opts) |
One [2D_AQUIFER_OPTIONS] line (KEY VALUE). Empty return = OK. | |
| std::string | openswmm::twoD::parseAquiferLine (const std::vector< std::string > &tokens, std::vector< GwAquiferRow > &rows) |
One [2D_AQUIFER] line. Empty return = OK. | |
| std::string | openswmm::twoD::parseAquiferNodeLine (const std::vector< std::string > &tokens, std::vector< GwNodeBed > &beds, std::vector< std::string > &names) |
| void | openswmm::twoD::registerSubsurfaceSections (SubsurfaceConfig &cfg, std::vector< std::string > &node_names, input::SectionRegistry ®istry) |
Register the three handlers against registry, writing into cfg. | |
| GwUnitFactors | openswmm::twoD::gwUnitFactors (const SimulationContext &ctx) noexcept |
| The factors for this project's unit system. | |
| std::vector< std::string > | openswmm::twoD::resolveSubsurface (SimulationContext &ctx, const MeshData &mesh, SubsurfaceConfig &cfg, const std::vector< std::string > &names) |
| void | openswmm::twoD::writeSubsurfaceSections (const SubsurfaceConfig &cfg, const std::vector< std::string > &node_names, std::string &out) |
G-step 1 — [2D_AQUIFER_OPTIONS], [2D_AQUIFER] and [2D_AQUIFER_NODE]: parsing, unit resolution and writing.
Rows are authored in the project's own unit system and converted once, by the kernel, through GwUnitFactors (declared in SubsurfaceData.hpp). The rule is deliberately uniform so a user who has read one row can read them all:
| quantity | US | SI |
|---|---|---|
lengths — ZS, PSI_B, HG0, DC | ft | m |
rates — KS, C_LOSS, KC | in/hr | mm/hr |
inverse lengths — ALPHA | 1/ft | 1/m |
areas — AREA | ft² | m² |
THETA_S, THETA_R, LAMBDA, N, L | — | — |
The rates follow [INFILTRATION] and [AQUIFERS] (in/hr, mm/hr), which is what a SWMM user already expects for a conductivity. The lengths follow the project length unit rather than [INFILTRATION]'s inches, because ZS is a soil-column depth of metres, not a suction head of millimetres, and mixing the two in one section is how unit bugs are authored.
The five positional columns are the ones every law needs. Everything a particular law adds (PSI_B, LAMBDA, N, L) is a keyword, so adding a law later does not renumber anyone's file.