39#ifndef OPENSWMM_REACTIONS_H
40#define OPENSWMM_REACTIONS_H
49#define SWMM_RXN_SCOPE_TERM 0
50#define SWMM_RXN_SCOPE_PIPE 1
51#define SWMM_RXN_SCOPE_TANK 2
52#define SWMM_RXN_SCOPE_SUBCATCHMENT 4
53#define SWMM_RXN_SCOPE_SUBSURFACE 3
56#define SWMM_RXN_FORM_NONE 0
57#define SWMM_RXN_FORM_RATE 1
58#define SWMM_RXN_FORM_EQUIL 2
59#define SWMM_RXN_FORM_FORMULA 3
83 const char* expr,
char* errbuf,
int buflen,
116 int* is_wall,
char* units,
int units_len,
117 double* atol,
double* rtol);
142 int* is_param,
double* value);
167 char* expr,
int expr_len);
185 int* form,
char* expr,
int expr_len);
236 const char* units,
double atol,
double rtol);
478 int* elem_idx,
int* species_idx,
double* value);
499 int species_idx,
double value);
#define SWMM_ENGINE_API
Definition openswmm_2d.h:62
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:55
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_reaction_validate_expression(SWMM_Engine engine, int scope, const char *expr, char *errbuf, int buflen, int *col_out)
Compile an expression against the current reaction/model vocabulary without changing state.
Definition openswmm_reactions_impl.cpp:149
SWMM_ENGINE_API int swmm_reaction_term_remove(SWMM_Engine engine, int idx)
Remove an intermediate term that has no compiled references.
Definition openswmm_reactions_impl.cpp:565
SWMM_ENGINE_API int swmm_reactions_serialize(SWMM_Engine engine, char *buf, int buflen, int *needed_len)
Serialize the current reaction system into complete NUL-terminated canonical text.
Definition openswmm_reactions_impl.cpp:830
SWMM_ENGINE_API int swmm_reaction_species_get(SWMM_Engine engine, int idx, char *name, int name_len, int *is_wall, char *units, int units_len, double *atol, double *rtol)
Read one reaction-species declaration.
Definition openswmm_reactions_impl.cpp:214
SWMM_ENGINE_API int swmm_reactions_save(SWMM_Engine engine, const char *path_or_null)
Write canonical reaction text to an explicit or bound config path.
Definition openswmm_reactions_impl.cpp:945
SWMM_ENGINE_API int swmm_reaction_hydvar_count(void)
Count hydraulic identifiers exposed by the expression compiler.
Definition openswmm_reactions_impl.cpp:977
SWMM_ENGINE_API int swmm_reaction_rain_conc_get(SWMM_Engine engine, int species_idx, double *value)
Read a species rainfall concentration.
Definition openswmm_reactions_impl.cpp:725
SWMM_ENGINE_API int swmm_reaction_function_get(int idx, char *name, int name_len, int *arity)
Copy a compiler function name and its argument arity.
Definition openswmm_reactions_impl.cpp:999
SWMM_ENGINE_API int swmm_reaction_term_add(SWMM_Engine engine, const char *name, const char *expr)
Append a copied intermediate term and eagerly compile the system.
Definition openswmm_reactions_impl.cpp:531
SWMM_ENGINE_API int swmm_reaction_species_add(SWMM_Engine engine, const char *name, int is_wall, const char *units, double atol, double rtol)
Append a species and rebuild its unified registry block.
Definition openswmm_reactions_impl.cpp:340
SWMM_ENGINE_API int swmm_reaction_term_count(SWMM_Engine engine)
Count declared intermediate terms.
Definition openswmm_reactions_impl.cpp:251
SWMM_ENGINE_API int swmm_reaction_rain_conc_set(SWMM_Engine engine, int species_idx, double value)
Assign a species rainfall concentration before initialization.
Definition openswmm_reactions_impl.cpp:737
SWMM_ENGINE_API int swmm_reaction_init_elem_set(SWMM_Engine engine, int is_link, int elem_idx, int species_idx, double value)
Upsert a reaction per-element initial concentration.
Definition openswmm_reactions_impl.cpp:787
SWMM_ENGINE_API int swmm_reaction_function_count(void)
Count built-in expression functions.
Definition openswmm_reactions_impl.cpp:995
SWMM_ENGINE_API int swmm_reaction_coeff_add(SWMM_Engine engine, const char *name, int is_param, double value)
Append a coefficient without recompiling unchanged expression indices.
Definition openswmm_reactions_impl.cpp:475
SWMM_ENGINE_API int swmm_reaction_init_global_set(SWMM_Engine engine, int species_idx, double value)
Assign a species global initial concentration before initialization.
Definition openswmm_reactions_impl.cpp:751
SWMM_ENGINE_API int swmm_reaction_init_elem_remove(SWMM_Engine engine, int entry_idx)
Remove one per-element reaction seed row and shift later indices down.
Definition openswmm_reactions_impl.cpp:812
SWMM_ENGINE_API int swmm_reactions_check_text(SWMM_Engine engine, const char *text, char *errbuf, int buflen)
Parse and compile complete reaction text without retaining the staged system.
Definition openswmm_reactions_impl.cpp:926
SWMM_ENGINE_API int swmm_reaction_coeff_remove(SWMM_Engine engine, int idx)
Remove a coefficient only when no compiled expression/override uses it.
Definition openswmm_reactions_impl.cpp:504
SWMM_ENGINE_API int swmm_reaction_term_set_expr(SWMM_Engine engine, int idx, const char *expr)
Replace a term source expression and recompile dependent expressions.
Definition openswmm_reactions_impl.cpp:549
SWMM_ENGINE_API int swmm_reaction_coeff_count(SWMM_Engine engine)
Count declared coefficients.
Definition openswmm_reactions_impl.cpp:231
SWMM_ENGINE_API int swmm_reaction_coeff_get(SWMM_Engine engine, int idx, char *name, int name_len, int *is_param, double *value)
Read one reaction coefficient declaration.
Definition openswmm_reactions_impl.cpp:237
SWMM_ENGINE_API int swmm_reaction_species_count(SWMM_Engine engine)
Count declared reaction species.
Definition openswmm_reactions_impl.cpp:208
SWMM_ENGINE_API int swmm_reaction_hydvar_get(int idx, char *name, int name_len, char *description, int desc_len)
Copy one compiler hydraulic-variable name and optional description.
Definition openswmm_reactions_impl.cpp:981
SWMM_ENGINE_API int swmm_reaction_expr_set(SWMM_Engine engine, int scope, int species_idx, int form, const char *expr)
Set or clear a species reaction expression in one domain.
Definition openswmm_reactions_impl.cpp:583
SWMM_ENGINE_API int swmm_reaction_init_elem_get(SWMM_Engine engine, int entry_idx, int *is_link, int *elem_idx, int *species_idx, double *value)
Read a reaction per-element initial concentration row.
Definition openswmm_reactions_impl.cpp:772
SWMM_ENGINE_API int swmm_reaction_expr_get(SWMM_Engine engine, int scope, int species_idx, int *form, char *expr, int expr_len)
Read a species reaction form and source text in one supported domain.
Definition openswmm_reactions_impl.cpp:270
SWMM_ENGINE_API int swmm_reaction_species_remove(SWMM_Engine engine, int idx)
Remove an unreferenced species and renumber dependent reaction indices.
Definition openswmm_reactions_impl.cpp:383
SWMM_ENGINE_API int swmm_reaction_init_global_get(SWMM_Engine engine, int species_idx, double *value)
Read a species global initial concentration.
Definition openswmm_reactions_impl.cpp:713
SWMM_ENGINE_API int swmm_reaction_option_set(SWMM_Engine engine, const char *key, const char *value)
Parse and assign one reaction option before initialization.
Definition openswmm_reactions_impl.cpp:614
SWMM_ENGINE_API int swmm_reactions_apply_text(SWMM_Engine engine, const char *text, char *errbuf, int buflen)
Replace the reaction system and its registry block from complete component text.
Definition openswmm_reactions_impl.cpp:937
SWMM_ENGINE_API int swmm_reaction_init_elem_count(SWMM_Engine engine)
Count declared per-element reaction seed rows.
Definition openswmm_reactions_impl.cpp:766
SWMM_ENGINE_API int swmm_reaction_coeff_set_value(SWMM_Engine engine, int idx, double value)
Replace one coefficient value without changing its identity or compiled index.
Definition openswmm_reactions_impl.cpp:494
SWMM_ENGINE_API int swmm_reaction_term_get(SWMM_Engine engine, int idx, char *name, int name_len, char *expr, int expr_len)
Read an intermediate term name and source expression.
Definition openswmm_reactions_impl.cpp:257
SWMM_ENGINE_API int swmm_reaction_option_get(SWMM_Engine engine, const char *key, char *value, int value_len)
Format a reaction option as its canonical token or numeric string.
Definition openswmm_reactions_impl.cpp:294