OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
SectionHandlers2D.hpp File Reference

Input section parsers for the 2D surface routing module. More...

#include "../data/MeshData.hpp"
#include "../data/SolverOptions2D.hpp"
#include "../infil/Infil2D.hpp"
#include "../SurfaceRouter2D.hpp"
#include "../../input/SectionRegistry.hpp"
#include <string>
#include <vector>
Include dependency graph for SectionHandlers2D.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  openswmm
 
namespace  openswmm::twoD
 

Functions

std::string openswmm::twoD::parse2DOptionsLine (const std::vector< std::string > &tokens, SolverOptions2D &opts, std::vector< std::string > *warnings=nullptr)
 Parse a single line from the [2D_OPTIONS] section.
 
std::string openswmm::twoD::parse2DVertexLine (const std::vector< std::string > &tokens, MeshData &mesh)
 Parse a single line from the [2D_VERTICES] section.
 
std::string openswmm::twoD::parse2DTriangleLine (const std::vector< std::string > &tokens, MeshData &mesh)
 Parse a single line from the [2D_TRIANGLES] section.
 
std::string openswmm::twoD::parse2DQuadLine (const std::vector< std::string > &tokens, MeshData &mesh)
 Parse a single line from the [2D_QUADS] section.
 
std::string openswmm::twoD::parse2DInitialVelocityLine (const std::vector< std::string > &tokens, MeshData &mesh)
 Parse a single line from the [2D_INITIAL_VELOCITY] section.
 
std::string openswmm::twoD::parse2DVertexNodeMapLine (const std::vector< std::string > &tokens, MeshData &mesh)
 Parse a single line from the [2D_VERTEX_NODE_MAP] section.
 
std::string openswmm::twoD::parse2DTriangleNodeMapLine (const std::vector< std::string > &tokens, MeshData &mesh)
 Parse a single line from the [2D_TRIANGLE_NODE_MAP] section.
 
std::string openswmm::twoD::parse2DBoundaryConditionsLine (const std::vector< std::string > &tokens, std::vector< SurfaceRouter2D::PendingBoundaryRow > &pending_rows)
 V-E3 — parse a single line from the [2D_BOUNDARY_CONDITIONS] section into a SurfaceRouter2D::PendingBoundaryRow appended to pending_rows.
 
std::string openswmm::twoD::parse2DEdgeConveyanceLine (const std::vector< std::string > &tokens, std::vector< SurfaceRouter2D::PendingEdgeConveyanceRow > &pending_rows)
 §11A — parse a single [2D_EDGE_CONVEYANCE] line.
 
std::string openswmm::twoD::parse2DInfiltrationOptionsLine (const std::vector< std::string > &tokens, Infil2D &infil)
 §5.5 track I — parse a single [2D_INFILTRATION_OPTIONS] line.
 
std::string openswmm::twoD::parse2DInfiltrationDefaultsLine (const std::vector< std::string > &tokens, Infil2D &infil)
 §5.5 track I — parse a single [2D_INFILTRATION_DEFAULTS] line.
 
std::string openswmm::twoD::parse2DInfiltrationLine (const std::vector< std::string > &tokens, Infil2D &infil)
 §5.5 track I — parse a single [2D_INFILTRATION] line.
 
bool openswmm::twoD::is2DOptionKey (const std::string &key)
 True when key (case-insensitive) is a [2D_OPTIONS] parameter accepted by parse2DOptionsLine.
 
bool openswmm::twoD::is2DRetiredOptionKey (const std::string &key)
 True when key (case-insensitive) is a [2D_OPTIONS] parameter retired with the CVODE/ARKODE stack (D2, 2026-07-29).
 
const std::vector< std::string > & openswmm::twoD::report2DVarTokens ()
 Format the current value of a [2D_OPTIONS] parameter as the string token parse2DOptionsLine accepts (round-trip safe).
 
std::string openswmm::twoD::parseReport2DVars (const std::string &text, unsigned &mask)
 
std::string openswmm::twoD::formatReport2DVars (unsigned mask)
 
std::string openswmm::twoD::format2DOptionValue (const SolverOptions2D &opts, const std::string &key)
 
std::string openswmm::twoD::format2DOptionValueEx (const SolverOptions2D &opts, const Infil2D *infil, const std::string &key)
 format2DOptionValue with the E2 infiltration keys resolved against the model's [2D_INFILTRATION*] rows: INFIL_STEP falls back to the section value, INFIL_DEFAULT_METHOD to the '*' row's method. INFILTRATION stays AUTO | YES | NO as stored. infil may be null.
 
std::string openswmm::twoD::format2DOptionValueEx (const SolverOptions2D &opts, const Infil2D *infil, const SubsurfaceConfig *aquifer, const std::string &key)
 As above, and additionally resolves the groundwater enables against the [2D_AQUIFER*] authoring: GROUNDWATER AUTO reports the YES|NO the kernel will actually take, and GW_ET reads the [2D_AQUIFER_OPTIONS] field that owns it. aquifer may be null.
 
void openswmm::twoD::register2DSections (MeshData &mesh, SolverOptions2D &options, std::vector< SurfaceRouter2D::PendingBoundaryRow > &pending_bc_rows, std::vector< SurfaceRouter2D::PendingEdgeConveyanceRow > &pending_ec_rows, std::vector< SurfaceRouter2D::PendingInitialQualityRow > &pending_iq_rows, std::vector< SurfaceRouter2D::PendingBoundaryQualityRow > &pending_bq_rows, input::SectionRegistry &registry)
 Register all 2D input section handlers with the section registry.
 
std::string openswmm::twoD::parse2DInitialQualityLine (const std::vector< std::string > &tokens, std::vector< SurfaceRouter2D::PendingInitialQualityRow > &rows)
 S1/S2 — one [2D_INITIAL_QUALITY] line. Empty string = OK.
 
std::string openswmm::twoD::parse2DBoundaryQualityLine (const std::vector< std::string > &tokens, std::vector< SurfaceRouter2D::PendingBoundaryQualityRow > &rows)
 S2 — one [2D_BOUNDARY_QUALITY] line (TRI EDGE SPECIES CONC). Empty = OK.
 
std::string openswmm::twoD::load2DMeshExternalFile (MeshData &mesh, SolverOptions2D &opts, std::vector< SurfaceRouter2D::PendingBoundaryRow > &pending_bc_rows, std::vector< SurfaceRouter2D::PendingEdgeConveyanceRow > &pending_ec_rows, Infil2D *infil, const std::string &mesh_file, const std::string &inp_base_dir, std::vector< std::string > *warnings=nullptr, std::vector< SurfaceRouter2D::PendingInitialQualityRow > *pending_iq_rows=nullptr, std::vector< SurfaceRouter2D::PendingBoundaryQualityRow > *pending_bq_rows=nullptr)
 Load 2D mesh sections from an external file.
 
void openswmm::twoD::prescan2DUnitsHeader (const std::string &inp_path, SolverOptions2D &opts)
 Scan inp_path for a ;; UNITS: <value> comment header and set opts.mesh_units_si to true when the value names metres.
 

Detailed Description

Input section parsers for the 2D surface routing module.

Provides handler functions for the [2D_*] input sections:

  • [2D_OPTIONS] — Solver options and tolerances
  • [2D_VERTICES] — Mesh vertex coordinates
  • [2D_TRIANGLES] — Triangle connectivity and roughness
  • [2D_VERTEX_NODE_MAP] — Vertex-to-SWMM-node coupling
  • [2D_TRIANGLE_NODE_MAP] — Triangle-to-SWMM-node coupling

Each handler is registered via SectionRegistry::register_custom() and conforms to the SectionHandler signature.

See also
TWO_DIMENSIONAL_SURFACE_ROUTING_IMPLEMENTATION_STRATEGY.md §1
Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License\n Apache-2.0