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

Richards-equation integration for LID node soil columns. More...

#include "LidNode.hpp"
#include "LidNodeRichardsState.hpp"
#include <type_traits>
#include "../core/SimulationContext.hpp"
#include "../core/UnitConversion.hpp"
#include "../hydraulics/Node.hpp"
#include "../input/Tokenizer.hpp"
#include <algorithm>
#include <cmath>
#include <limits>
#include <sstream>
#include <stdexcept>
Include dependency graph for LidNodeRichards.cpp:

Namespaces

namespace  openswmm
 
namespace  openswmm::lidnode
 
namespace  openswmm::lidnode::detail
 

Functions

bool openswmm::lidnode::richardsMode (const SimulationContext &ctx, int node)
 Read the initialized LID Richards mode flag for a node.
 
double openswmm::lidnode::exchangeRichardsPorts (SimulationContext &ctx, int link, double flow, double dt)
 Limit and book a link transfer involving Richards or mixed retained-water ports.
 
void openswmm::lidnode::readRichards (SimulationContext &ctx, const std::vector< std::string > &lines)
 Parse node-LID Richards numerical options and layer retention/storage materials.
 
void openswmm::lidnode::refreshRichardsState (SimulationContext &ctx, int row)
 Recompute one initialized Richards row pressure, moisture and retained inventory.
 
void openswmm::lidnode::detail::checkMeshInterval (const LidNodeState &s, double start, double end)
 Require an exact pending accepted Mesh owner interval.
 
richards::Column openswmm::lidnode::detail::column (const SimulationContext &ctx, int row, double dt, double evaporation, bool continuous=false)
 Convert one initialized native node stack to an owned SI Richards column.
 
RichardsNodeDraft openswmm::lidnode::detail::draft (const SimulationContext &ctx, int row, const richards::Column &col, const richards::Report &report, double dt, double completed, bool mesh=false)
 Prepare an owned native publication from an accepted SI column/report.
 
void openswmm::lidnode::detail::publish (SimulationContext &ctx, RichardsNodeDraft &&d) noexcept
 Publish one fully prepared native Richards state without throwing.
 
LidNodeState openswmm::lidnode::detail::routed (const SimulationContext &ctx, int row)
 Prepare a Mesh Richards state incorporating accepted hydraulic porous-port water.
 
bool openswmm::lidnode::validateRichardsRouting (const SimulationContext &ctx, double dt)
 Preflight the common accepted Mesh Richards routing interval without mutation.
 
void openswmm::lidnode::prepareRichardsStep (SimulationContext &ctx, double dt, double evaporation, bool mesh_prepared=false)
 Advance non-Mesh Richards owners privately, then publish the whole successful batch.
 

Detailed Description

Richards-equation integration for LID node soil columns.

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License
Apache-2.0