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

Implementation of the explicit local-inertial FV marcher with power-of-two tiered local timestepping (LTS). More...

#include "ExplicitInertialSolver.hpp"
#include "../subsurface/SubsurfaceSolver.hpp"
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <stdexcept>
#include <string>
#include "../data/MeshData.hpp"
#include "../data/SolverOptions2D.hpp"
#include "../data/SurfaceStateData.hpp"
#include "../data/BoundaryData.hpp"
#include "InertialKernels.hpp"
#include "SweKernels.hpp"
#include "DiffusiveKernels.hpp"
#include "SurfaceFluxCalculator.hpp"
#include "../coupling/NodeCoupling.hpp"
#include "../../data/NodeData.hpp"
Include dependency graph for ExplicitInertialSolver.cpp:

Namespaces

namespace  openswmm
 
namespace  openswmm::twoD
 

Detailed Description

Implementation of the explicit local-inertial FV marcher with power-of-two tiered local timestepping (LTS).

Marching order (halving scheme): a macro cycle of 2^{K−1} base substeps of length dt0; tier k fires every 2^k substeps with Δt = 2^k·dt0. A face belongs to the FINER of its incident cells' tiers, so it always integrates at the rate the sharper side needs, reading the coarser cell's surface frozen at that cell's last firing. Every face firing books the identical ±ΔM = q·ξ·Δt_f into per-side accumulators; each cell applies its own side at its own firing — conservation across tier interfaces is exact by construction (same FP products, booked at different times).

Positivity: at face cadence each exporting face is capped at (β/nv)·V of its exporting cell, so a cell's ≤ nv outgoing faces can take at most β·V per own-step — V ≥ 0 without any cross-face coordination (exact at K = 1 where V is fresh every substep; the α-margin covers within-cycle depth drift for K > 1, with a zero-floor backstop at the cell update).

See also
ExplicitInertialSolver.hpp, InertialKernels.hpp