OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
ReactionLegacyBinding.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2//
3// Copyright 2026 Caleb Buahin
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
47
48#ifndef OPENSWMM_ENGINE_TRANSPORT_REACTION_LEGACY_BINDING_HPP
49#define OPENSWMM_ENGINE_TRANSPORT_REACTION_LEGACY_BINDING_HPP
50
51#include <limits>
52
53namespace openswmm {
55struct ReactionData;
56}
57
58namespace openswmm::transport {
59
62bool legacyReactionsActive(const SimulationContext& ctx);
63
67void ensureMsxState(SimulationContext& ctx);
68
71void noteNegativeClamp(SimulationContext& ctx, const char* where);
72
76double clampRateSpecies(const ReactionData& rx, bool tank, double* block, double* added);
77
85void reactSpeciesBlock(SimulationContext& ctx, bool tank, double dt, double* species_block,
86 const double* pollut, double hrt_seconds,
87 double temp_c = std::numeric_limits<double>::quiet_NaN(), int element = -1);
88
91void reactLegacyNodes(SimulationContext& ctx, double dt);
92
97void reactLegacyLinks(SimulationContext& ctx, double dt);
98
105void warnIfLegacyBindingBypassed(SimulationContext& ctx);
106
107} // namespace openswmm::transport
108
109#endif // OPENSWMM_ENGINE_TRANSPORT_REACTION_LEGACY_BINDING_HPP
Definition ExplicitFvSolver.hpp:53
void reactLegacyNodes(SimulationContext &ctx, double dt)
Run legacy-bound exact pollutant decay and native node kinetics once.
Definition ReactionLegacyBinding.cpp:429
double clampRateSpecies(const ReactionData &rx, bool tank, double *block, double *added)
Floor negative RATE species only and optionally report each concentration addition.
Definition ReactionLegacyBinding.cpp:163
void ensureMsxState(SimulationContext &ctx)
Lazily size + seed the MSX element state; warn once about the R4b transport limitation when any RATE ...
Definition ReactionLegacyBinding.cpp:95
void reactLegacyLinks(SimulationContext &ctx, double dt)
Run legacy-bound exact pollutant decay and native link kinetics once.
Definition ReactionLegacyBinding.cpp:450
void warnIfLegacyBindingBypassed(SimulationContext &ctx)
Warn when configured compiled reactions are bypassed by IGNORE_QUALITY.
Definition ReactionLegacyBinding.cpp:466
bool legacyReactionsActive(const SimulationContext &ctx)
Test configured and compiled native reaction readiness.
Definition ReactionLegacyBinding.cpp:413
void reactSpeciesBlock(SimulationContext &ctx, bool tank, double dt, double *species_block, const double *pollut, double hrt_seconds, double temp_c, int element)
React one LARD-owned tuple with held HRT/temperature and optional element geometry.
Definition ReactionLegacyBinding.cpp:377
void noteNegativeClamp(SimulationContext &ctx, const char *where)
Review A2: one warning per run when the reaction step had to clamp a negative concentration....
Definition ReactionLegacyBinding.cpp:139
Definition ExchangeLaw.hpp:60
Definition ReactionData.hpp:58
Central, reentrant simulation context.
Definition SimulationContext.hpp:390