@swmmrs/swmmrs 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +264 -0
- package/dist/README.md +264 -0
- package/dist/serial/README.md +264 -0
- package/dist/serial/swmmrs.d.ts +395 -0
- package/dist/serial/swmmrs.js +3169 -0
- package/dist/serial/swmmrs_bg.wasm +0 -0
- package/dist/snippets/swmmrs-parallel-5d1c71108133e81d/worker-pool/browser.js +98 -0
- package/dist/swmmrs.d.ts +422 -0
- package/dist/swmmrs.js +3330 -0
- package/dist/swmmrs_bg.wasm +0 -0
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/lib/swmmrs/client.d.ts +11 -0
- package/lib/swmmrs/client.d.ts.map +1 -0
- package/lib/swmmrs/client.js +82 -0
- package/lib/swmmrs/client.js.map +1 -0
- package/lib/swmmrs/enums.d.ts +41 -0
- package/lib/swmmrs/enums.d.ts.map +1 -0
- package/lib/swmmrs/enums.js +2 -0
- package/lib/swmmrs/enums.js.map +1 -0
- package/lib/swmmrs/exceptions.d.ts +98 -0
- package/lib/swmmrs/exceptions.d.ts.map +1 -0
- package/lib/swmmrs/exceptions.js +86 -0
- package/lib/swmmrs/exceptions.js.map +1 -0
- package/lib/swmmrs/index.d.ts +27 -0
- package/lib/swmmrs/index.d.ts.map +1 -0
- package/lib/swmmrs/index.js +13 -0
- package/lib/swmmrs/index.js.map +1 -0
- package/lib/swmmrs/objects/amm.d.ts +114 -0
- package/lib/swmmrs/objects/amm.d.ts.map +1 -0
- package/lib/swmmrs/objects/amm.js +19 -0
- package/lib/swmmrs/objects/amm.js.map +1 -0
- package/lib/swmmrs/objects/collections.d.ts +109 -0
- package/lib/swmmrs/objects/collections.d.ts.map +1 -0
- package/lib/swmmrs/objects/collections.js +158 -0
- package/lib/swmmrs/objects/collections.js.map +1 -0
- package/lib/swmmrs/objects/definitions.d.ts +215 -0
- package/lib/swmmrs/objects/definitions.d.ts.map +1 -0
- package/lib/swmmrs/objects/definitions.js +69 -0
- package/lib/swmmrs/objects/definitions.js.map +1 -0
- package/lib/swmmrs/objects/lids.d.ts +446 -0
- package/lib/swmmrs/objects/lids.d.ts.map +1 -0
- package/lib/swmmrs/objects/lids.js +90 -0
- package/lib/swmmrs/objects/lids.js.map +1 -0
- package/lib/swmmrs/objects/links.d.ts +615 -0
- package/lib/swmmrs/objects/links.d.ts.map +1 -0
- package/lib/swmmrs/objects/links.js +90 -0
- package/lib/swmmrs/objects/links.js.map +1 -0
- package/lib/swmmrs/objects/nodes.d.ts +494 -0
- package/lib/swmmrs/objects/nodes.d.ts.map +1 -0
- package/lib/swmmrs/objects/nodes.js +147 -0
- package/lib/swmmrs/objects/nodes.js.map +1 -0
- package/lib/swmmrs/objects/options.d.ts +112 -0
- package/lib/swmmrs/objects/options.d.ts.map +1 -0
- package/lib/swmmrs/objects/options.js +27 -0
- package/lib/swmmrs/objects/options.js.map +1 -0
- package/lib/swmmrs/objects/rtk.d.ts +82 -0
- package/lib/swmmrs/objects/rtk.d.ts.map +1 -0
- package/lib/swmmrs/objects/rtk.js +19 -0
- package/lib/swmmrs/objects/rtk.js.map +1 -0
- package/lib/swmmrs/objects/subcatchments.d.ts +575 -0
- package/lib/swmmrs/objects/subcatchments.d.ts.map +1 -0
- package/lib/swmmrs/objects/subcatchments.js +243 -0
- package/lib/swmmrs/objects/subcatchments.js.map +1 -0
- package/lib/swmmrs/output.d.ts +412 -0
- package/lib/swmmrs/output.d.ts.map +1 -0
- package/lib/swmmrs/output.js +507 -0
- package/lib/swmmrs/output.js.map +1 -0
- package/lib/swmmrs/protocol.d.ts +80 -0
- package/lib/swmmrs/protocol.d.ts.map +1 -0
- package/lib/swmmrs/protocol.js +2 -0
- package/lib/swmmrs/protocol.js.map +1 -0
- package/lib/swmmrs/runtime.d.ts +22 -0
- package/lib/swmmrs/runtime.d.ts.map +1 -0
- package/lib/swmmrs/runtime.js +146 -0
- package/lib/swmmrs/runtime.js.map +1 -0
- package/lib/swmmrs/scenarios.d.ts +41 -0
- package/lib/swmmrs/scenarios.d.ts.map +1 -0
- package/lib/swmmrs/scenarios.js +2 -0
- package/lib/swmmrs/scenarios.js.map +1 -0
- package/lib/swmmrs/simulation.d.ts +249 -0
- package/lib/swmmrs/simulation.d.ts.map +1 -0
- package/lib/swmmrs/simulation.js +415 -0
- package/lib/swmmrs/simulation.js.map +1 -0
- package/lib/swmmrs/snapshots.d.ts +192 -0
- package/lib/swmmrs/snapshots.d.ts.map +1 -0
- package/lib/swmmrs/snapshots.js +2 -0
- package/lib/swmmrs/snapshots.js.map +1 -0
- package/lib/swmmrs/types.d.ts +123 -0
- package/lib/swmmrs/types.d.ts.map +1 -0
- package/lib/swmmrs/types.js +2 -0
- package/lib/swmmrs/types.js.map +1 -0
- package/lib/swmmrs/worker.d.ts +2 -0
- package/lib/swmmrs/worker.d.ts.map +1 -0
- package/lib/swmmrs/worker.js +488 -0
- package/lib/swmmrs/worker.js.map +1 -0
- package/package.json +33 -0
- package/src/swmmrs/client.ts +76 -0
- package/src/swmmrs/enums.ts +73 -0
- package/src/swmmrs/exceptions.ts +120 -0
- package/src/swmmrs/index.ts +79 -0
- package/src/swmmrs/objects/amm.ts +113 -0
- package/src/swmmrs/objects/collections.ts +153 -0
- package/src/swmmrs/objects/definitions.ts +246 -0
- package/src/swmmrs/objects/lids.ts +487 -0
- package/src/swmmrs/objects/links.ts +626 -0
- package/src/swmmrs/objects/nodes.ts +504 -0
- package/src/swmmrs/objects/options.ts +114 -0
- package/src/swmmrs/objects/rtk.ts +79 -0
- package/src/swmmrs/objects/subcatchments.ts +650 -0
- package/src/swmmrs/output.ts +798 -0
- package/src/swmmrs/protocol.ts +62 -0
- package/src/swmmrs/runtime.ts +188 -0
- package/src/swmmrs/scenarios.ts +40 -0
- package/src/swmmrs/simulation.ts +406 -0
- package/src/swmmrs/snapshots.ts +199 -0
- package/src/swmmrs/types.ts +123 -0
- package/src/swmmrs/worker.ts +233 -0
- package/worker-node.js +142 -0
- package/worker.js +1 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import { WorkerClient } from "./client.js";
|
|
2
|
+
import { LifecycleError, WorkerError } from "./exceptions.js";
|
|
3
|
+
import { ObjectCollection, NodeCollection, LinkCollection, SubcatchmentCollection, RainGageCollection } from "./objects/collections.js";
|
|
4
|
+
import { SimulationOptionsView } from "./objects/options.js";
|
|
5
|
+
import { Definition, Aquifer, SnowmeltParameterSet } from "./objects/definitions.js";
|
|
6
|
+
import { AmmModel } from "./objects/amm.js";
|
|
7
|
+
import { UnitHydrograph } from "./objects/rtk.js";
|
|
8
|
+
import { LidControl } from "./objects/lids.js";
|
|
9
|
+
import { bytes, createWorker, runtimeInfo } from "./runtime.js";
|
|
10
|
+
/**
|
|
11
|
+
* One isolated project, worker pool, and in-memory file system. Open with
|
|
12
|
+
* {@link open}, not the private constructor, and always await {@link close}.
|
|
13
|
+
* Handles and collections share this owner's lifecycle. Only one iterator or
|
|
14
|
+
* manual advancement may own the solver; result reads and allowed controls can
|
|
15
|
+
* run between observations. Records already returned remain usable after close.
|
|
16
|
+
*/
|
|
17
|
+
export class Simulation {
|
|
18
|
+
/** Configured-order node handles and aligned snapshot reads. */
|
|
19
|
+
nodes;
|
|
20
|
+
/** Configured-order link handles and aligned snapshot reads. */
|
|
21
|
+
links;
|
|
22
|
+
/** Configured-order subcatchment handles and aligned snapshot reads. */
|
|
23
|
+
subcatchments;
|
|
24
|
+
/** Configured-order rain-gage handles; no collection snapshot API. */
|
|
25
|
+
rainGages;
|
|
26
|
+
/** Stable model-option view, distinct from worker creation options. */
|
|
27
|
+
options;
|
|
28
|
+
/** Pollutant identities; definition editing is not exposed. */
|
|
29
|
+
pollutants;
|
|
30
|
+
/** Land-use identities. */
|
|
31
|
+
landUses;
|
|
32
|
+
/** Time-pattern identities. */
|
|
33
|
+
timePatterns;
|
|
34
|
+
/** Curve identities. */
|
|
35
|
+
curves;
|
|
36
|
+
/** Time-series identities; data editing is not exposed. */
|
|
37
|
+
timeSeries;
|
|
38
|
+
/** Control-rule identities. */
|
|
39
|
+
controls;
|
|
40
|
+
/** Transect identities. */
|
|
41
|
+
transects;
|
|
42
|
+
/** Editable aquifer definitions. */
|
|
43
|
+
aquifers;
|
|
44
|
+
/** Editable snowmelt parameter sets. */
|
|
45
|
+
snowmeltSets;
|
|
46
|
+
/** Custom cross-section shape identities. */
|
|
47
|
+
shapes;
|
|
48
|
+
/** Street identities. */
|
|
49
|
+
streets;
|
|
50
|
+
/** Inlet-design identities. */
|
|
51
|
+
inletDesigns;
|
|
52
|
+
/** Editable AMM definitions; node assignments are separate. */
|
|
53
|
+
ammModels;
|
|
54
|
+
/** Editable RTK definitions; RDII assignments are separate. */
|
|
55
|
+
unitHydrographs;
|
|
56
|
+
/** Editable LID-control layers; unit placements belong to subcatchments. */
|
|
57
|
+
lidControls;
|
|
58
|
+
#client;
|
|
59
|
+
#iterating = false;
|
|
60
|
+
#advancing = false;
|
|
61
|
+
#closed = false;
|
|
62
|
+
#terminateRequested = false;
|
|
63
|
+
constructor(client, info) {
|
|
64
|
+
this.#client = client;
|
|
65
|
+
const assertOpen = () => client.assertOpen();
|
|
66
|
+
this.nodes = NodeCollection.create(info.nodeIds, client.call, assertOpen);
|
|
67
|
+
this.links = LinkCollection.create(info.linkIds, client.call, assertOpen);
|
|
68
|
+
this.subcatchments = SubcatchmentCollection.create(info.subcatchmentIds, client.call, assertOpen);
|
|
69
|
+
this.rainGages = RainGageCollection.create(info.rainGageIds, client.call, assertOpen);
|
|
70
|
+
this.options = SimulationOptionsView.create(client.call);
|
|
71
|
+
this.pollutants = new ObjectCollection(info.pollutantIds, id => Definition.create(id, client.call), assertOpen);
|
|
72
|
+
this.landUses = new ObjectCollection(info.landUseIds, id => Definition.create(id, client.call), assertOpen);
|
|
73
|
+
this.timePatterns = new ObjectCollection(info.timePatternIds, id => Definition.create(id, client.call), assertOpen);
|
|
74
|
+
this.curves = new ObjectCollection(info.curveIds, id => Definition.create(id, client.call), assertOpen);
|
|
75
|
+
this.timeSeries = new ObjectCollection(info.timeSeriesIds, id => Definition.create(id, client.call), assertOpen);
|
|
76
|
+
this.controls = new ObjectCollection(info.controlIds, id => Definition.create(id, client.call), assertOpen);
|
|
77
|
+
this.transects = new ObjectCollection(info.transectIds, id => Definition.create(id, client.call), assertOpen);
|
|
78
|
+
this.aquifers = new ObjectCollection(info.aquiferIds, id => Aquifer.create(id, client.call), assertOpen);
|
|
79
|
+
this.snowmeltSets = new ObjectCollection(info.snowmeltIds, id => SnowmeltParameterSet.create(id, client.call), assertOpen);
|
|
80
|
+
this.shapes = new ObjectCollection(info.shapeIds, id => Definition.create(id, client.call), assertOpen);
|
|
81
|
+
this.streets = new ObjectCollection(info.streetIds, id => Definition.create(id, client.call), assertOpen);
|
|
82
|
+
this.inletDesigns = new ObjectCollection(info.inletDesignIds, id => Definition.create(id, client.call), assertOpen);
|
|
83
|
+
this.ammModels = new ObjectCollection(info.ammModelIds, id => AmmModel.create(id, client.call), assertOpen);
|
|
84
|
+
this.unitHydrographs = new ObjectCollection(info.unitHydrographIds, id => UnitHydrograph.create(id, client.call), assertOpen);
|
|
85
|
+
this.lidControls = new ObjectCollection(info.lidControlIds, id => LidControl.create(id, client.call), assertOpen);
|
|
86
|
+
}
|
|
87
|
+
/** Parse an INP in a new independent worker.
|
|
88
|
+
* @param input - INP contents, never a host path.
|
|
89
|
+
* @param files - Supporting-file contents keyed by INP-relative paths; defaults to an empty record.
|
|
90
|
+
* @param options - Worker URL and thread capacity; defaults to an empty record.
|
|
91
|
+
* @returns An owner in `open`; close it when finished.
|
|
92
|
+
* @throws Rejects malformed input, invalid thread capacity, unavailable runtime prerequisites, or solver parse failures.
|
|
93
|
+
*/
|
|
94
|
+
static async open(input, files = {}, options = {}) {
|
|
95
|
+
const { maxThreads, defaultThreads, parallel } = await runtimeInfo();
|
|
96
|
+
const threads = options.threads ?? defaultThreads;
|
|
97
|
+
validateThreads(threads, maxThreads, parallel);
|
|
98
|
+
const stagedFiles = Object.fromEntries(await Promise.all(Object.entries(files).map(async ([name, value]) => [name, await bytes(value)])));
|
|
99
|
+
const inputBytes = await bytes(input);
|
|
100
|
+
const client = new WorkerClient(await createWorker(options));
|
|
101
|
+
try {
|
|
102
|
+
const info = await client.call("open", inputBytes, stagedFiles, threads);
|
|
103
|
+
return new Simulation(client, info);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
client.stop(error instanceof Error ? error : new Error(String(error)));
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/** Restore a checkpoint in an independent worker without rerunning the model.
|
|
111
|
+
* @param checkpoint - Complete bundle, including manifest sidecars and dependencies.
|
|
112
|
+
* @param options - Worker creation options (the second argument); defaults to an empty record.
|
|
113
|
+
* @returns An independent owner; no worker or mutable state is shared with the source.
|
|
114
|
+
* @throws Rejects unsupported, corrupt, mismatched, or incomplete checkpoint bundles.
|
|
115
|
+
*/
|
|
116
|
+
static async resume(checkpoint, options = {}) {
|
|
117
|
+
const { maxThreads, defaultThreads, parallel } = await runtimeInfo();
|
|
118
|
+
const threads = options.threads ?? defaultThreads;
|
|
119
|
+
validateThreads(threads, maxThreads, parallel);
|
|
120
|
+
const client = new WorkerClient(await createWorker(options));
|
|
121
|
+
try {
|
|
122
|
+
return new Simulation(client, await client.call("resumeCheckpoint", checkpoint, threads));
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
client.stop(error instanceof Error ? error : new Error(String(error)));
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/** Read native lifecycle state, including after cleanup.
|
|
130
|
+
* @returns The current state, or `closed` after close completes.
|
|
131
|
+
*/
|
|
132
|
+
getState() { return this.#closed ? Promise.resolve("closed") : this.#client.call("state"); }
|
|
133
|
+
/** Read model identities, units, solver build, effective threads, and schedule while healthy.
|
|
134
|
+
* @returns Detached model information.
|
|
135
|
+
*/
|
|
136
|
+
info() { return this.#client.call("info"); }
|
|
137
|
+
/** Read lifecycle and progress before close.
|
|
138
|
+
* @returns Detached status; unavailable after cleanup.
|
|
139
|
+
*/
|
|
140
|
+
status() { return this.#client.call("status"); }
|
|
141
|
+
/** Update calendar boundaries in `open` or `ended`; accepted edits return `ended` to `open`.
|
|
142
|
+
* @param patch - Sparse timezone-free schedule. Omitted times retain their values.
|
|
143
|
+
* @returns Resolves after the schedule update is accepted.
|
|
144
|
+
*/
|
|
145
|
+
updateSchedule(patch) { return this.#advance("updateSchedule", () => this.#client.call("updateSchedule", patch)); }
|
|
146
|
+
/** Read the complete AMM node-assignment list.
|
|
147
|
+
* @returns Canonical node/model IDs and areas in project land-area units.
|
|
148
|
+
*/
|
|
149
|
+
ammAssignments() { return this.#client.call("ammAssignments"); }
|
|
150
|
+
/** Atomically replace all AMM assignments in `open` or `ended`; accepted edits return the owner to `open`.
|
|
151
|
+
* @param assignments - Complete replacement list; an empty list clears all assignments.
|
|
152
|
+
* @returns Resolves after all assignments are accepted.
|
|
153
|
+
*/
|
|
154
|
+
replaceAmmAssignments(assignments) { return this.#client.call("replaceAmmAssignments", assignments); }
|
|
155
|
+
/** Read the complete RTK RDII assignment list.
|
|
156
|
+
* @returns Canonical node/unit-hydrograph IDs and project land areas.
|
|
157
|
+
*/
|
|
158
|
+
rdiiAssignments() { return this.#client.call("rdiiAssignments"); }
|
|
159
|
+
/** Atomically replace all RTK assignments in `open` or `ended`; accepted edits return the owner to `open`.
|
|
160
|
+
* @param assignments - Complete replacement list; an empty list clears all assignments.
|
|
161
|
+
* @returns Resolves after all assignments are accepted.
|
|
162
|
+
*/
|
|
163
|
+
replaceRdiiAssignments(assignments) { return this.#client.call("replaceRdiiAssignments", assignments); }
|
|
164
|
+
/** Configure hotstart input in `open` or `ended`; accepted edits return the owner to `open`.
|
|
165
|
+
* @param input - Hotstart file contents, or null to clear the configured input.
|
|
166
|
+
* @returns Resolves after the configuration write.
|
|
167
|
+
*/
|
|
168
|
+
useHotstart(input) {
|
|
169
|
+
return this.#advance("useHotstart", async () => this.#client.call("useHotstart", input === null ? null : await bytes(input)));
|
|
170
|
+
}
|
|
171
|
+
/** Save current hydraulic state in `running` or `complete`.
|
|
172
|
+
* @returns Caller-owned EPA hotstart bytes.
|
|
173
|
+
*/
|
|
174
|
+
saveHotstart() { return this.#client.call("saveHotstart"); }
|
|
175
|
+
/** Capture a quiescent `running` or `complete` owner, including validated dependencies.
|
|
176
|
+
* @returns Complete portable checkpoint bundle with manifest sidecars.
|
|
177
|
+
*/
|
|
178
|
+
saveCheckpoint() { return this.#client.call("exportCheckpoint"); }
|
|
179
|
+
/** Stage physical and numerical checkpoint state in an `open` owner.
|
|
180
|
+
* Declarations, files, and persistent forcings remain those of the receiver.
|
|
181
|
+
* @param checkpoint - Compatible bundle with all required dependencies.
|
|
182
|
+
* @returns Resolves with the owner still `open`; state is applied by its next start.
|
|
183
|
+
* @throws Rejects incompatible identity, unsupported dependencies, corrupt manifests, or missing sidecars.
|
|
184
|
+
*/
|
|
185
|
+
loadCheckpointState(checkpoint) {
|
|
186
|
+
return this.#advance("loadCheckpointState", () => this.#client.call("loadCheckpointState", checkpoint));
|
|
187
|
+
}
|
|
188
|
+
/** Save a checkpoint and resume it in a new independent owner.
|
|
189
|
+
* @param options - Worker options for the child; defaults to an empty record.
|
|
190
|
+
* @returns Independent simulation with copied run state and forcings.
|
|
191
|
+
*/
|
|
192
|
+
async fork(options = {}) {
|
|
193
|
+
return Simulation.resume(await this.saveCheckpoint(), options);
|
|
194
|
+
}
|
|
195
|
+
/** Start an `open` or `ended` model.
|
|
196
|
+
* @param options - Run options; `saveResults` defaults to true.
|
|
197
|
+
* @returns Resolves after solver initialization succeeds.
|
|
198
|
+
*/
|
|
199
|
+
start({ saveResults = true } = {}) {
|
|
200
|
+
validateSaveResults(saveResults);
|
|
201
|
+
return this.#advance("start", () => this.#client.call("start", saveResults));
|
|
202
|
+
}
|
|
203
|
+
/** Advance one routing step in a started run, without an active iterator.
|
|
204
|
+
* @returns New model time, or null at natural completion.
|
|
205
|
+
*/
|
|
206
|
+
step() { return this.#advance("step", () => this.#client.call("step")); }
|
|
207
|
+
/** Advance an observation interval in a started run.
|
|
208
|
+
* @param seconds - Positive 32-bit integer interval in seconds.
|
|
209
|
+
* @param strict - Defaults to true: land exactly on the boundary. False allows whole-step overshoot.
|
|
210
|
+
* @returns New model time, or null at natural completion.
|
|
211
|
+
*/
|
|
212
|
+
async stride(seconds, strict = true) {
|
|
213
|
+
validateSeconds(seconds);
|
|
214
|
+
if (typeof strict !== "boolean")
|
|
215
|
+
throw new TypeError("strict must be a boolean");
|
|
216
|
+
return this.#advance("stride", () => this.#client.call("stride", seconds, strict));
|
|
217
|
+
}
|
|
218
|
+
/** Automatic start and routing-step advancement; exhaustion retains final statistics.
|
|
219
|
+
* @returns The same async generator as {@link steps} with default options.
|
|
220
|
+
*/
|
|
221
|
+
[Symbol.asyncIterator]() { return this.steps(); }
|
|
222
|
+
/** Iterate observations, lazily starting `open` or `ended` owners on the first `next()`.
|
|
223
|
+
* Early exit releases advancement ownership, leaving the run available to finish or resume.
|
|
224
|
+
* @param options - Observation/run options; routing-step cadence, strict boundaries, and retained results by default.
|
|
225
|
+
* @returns Generator of observation times. Natural exhaustion leaves final statistics available.
|
|
226
|
+
* @throws Rejects invalid intervals/flags or competing advancement/finalization.
|
|
227
|
+
*/
|
|
228
|
+
async *steps({ seconds, strict = true, saveResults = true } = {}) {
|
|
229
|
+
if (seconds !== undefined)
|
|
230
|
+
validateSeconds(seconds);
|
|
231
|
+
validateSaveResults(saveResults);
|
|
232
|
+
if (typeof strict !== "boolean")
|
|
233
|
+
throw new TypeError("strict must be a boolean");
|
|
234
|
+
this.#assertManual("iterate");
|
|
235
|
+
this.#iterating = true;
|
|
236
|
+
try {
|
|
237
|
+
const state = await this.#client.call("state");
|
|
238
|
+
if (state === "open" || state === "ended")
|
|
239
|
+
await this.#client.call("start", saveResults);
|
|
240
|
+
if (state === "complete")
|
|
241
|
+
return;
|
|
242
|
+
while (true) {
|
|
243
|
+
if (this.#terminateRequested) {
|
|
244
|
+
await this.#client.call("end");
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const time = seconds === undefined
|
|
248
|
+
? await this.#client.call("step")
|
|
249
|
+
: await this.#client.call("stride", seconds, strict);
|
|
250
|
+
if (time === null)
|
|
251
|
+
return;
|
|
252
|
+
yield time;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
finally {
|
|
256
|
+
this.#iterating = false;
|
|
257
|
+
this.#terminateRequested = false;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/** End active iteration at its next observation boundary, without closing the owner.
|
|
261
|
+
* @returns Immediately; the iterator performs the end operation at its next boundary.
|
|
262
|
+
* @throws Synchronously throws LifecycleError if no iterator owns advancement.
|
|
263
|
+
*/
|
|
264
|
+
terminate() {
|
|
265
|
+
if (!this.#iterating)
|
|
266
|
+
throw new LifecycleError({ message: "No active iterator owns advancement", operation: "terminate" });
|
|
267
|
+
this.#terminateRequested = true;
|
|
268
|
+
}
|
|
269
|
+
#assertManual(operation) {
|
|
270
|
+
this.#client.assertOpen();
|
|
271
|
+
if (this.#iterating)
|
|
272
|
+
throw new LifecycleError({ message: "An active iterator owns simulation advancement", operation });
|
|
273
|
+
if (this.#advancing)
|
|
274
|
+
throw new LifecycleError({ message: "A simulation advancement is already pending", operation });
|
|
275
|
+
}
|
|
276
|
+
async #advance(operation, execute) {
|
|
277
|
+
this.#assertManual(operation);
|
|
278
|
+
this.#advancing = true;
|
|
279
|
+
try {
|
|
280
|
+
return await execute();
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
this.#advancing = false;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/** Direct node result read retained for prototype callers; requires results to be available.
|
|
287
|
+
* @param id - Node ID resolved in the worker, not by a local collection lookup.
|
|
288
|
+
* @returns Detached node hydraulics; unknown IDs reject the promise.
|
|
289
|
+
*/
|
|
290
|
+
node(id) { return this.#client.call("node", id); }
|
|
291
|
+
/** Direct link result read retained for prototype callers.
|
|
292
|
+
* @param id - Link ID resolved in the worker.
|
|
293
|
+
* @returns Detached link hydraulics; unknown IDs reject the promise.
|
|
294
|
+
*/
|
|
295
|
+
link(id) { return this.#client.call("link", id); }
|
|
296
|
+
/** Direct equivalent of `nodes.get(id).setExternalInflow(flow)`.
|
|
297
|
+
* @param id - Node ID resolved in the worker.
|
|
298
|
+
* @param flow - Persistent additive inflow in project flow units.
|
|
299
|
+
* @returns Resolves after updating the forcing in `open`, `running`, or `ended`.
|
|
300
|
+
*/
|
|
301
|
+
setNodeExternalInflow(id, flow) { return this.#client.call("setNodeExternalInflow", id, flow); }
|
|
302
|
+
/** Direct equivalent of `links.get(id).setTargetSetting(setting)`; requires `running`.
|
|
303
|
+
* @param id - Link ID resolved in the worker.
|
|
304
|
+
* @param setting - Dimensionless opening or pump speed factor.
|
|
305
|
+
* @returns Resolves after updating the target; unknown IDs reject the promise.
|
|
306
|
+
*/
|
|
307
|
+
setLinkTargetSetting(id, setting) { return this.#client.call("setLinkTargetSetting", id, setting); }
|
|
308
|
+
/** Read system statistics in `running` or `complete`, before ending the run.
|
|
309
|
+
* @returns Detached cumulative totals, continuity balances, and routing diagnostics.
|
|
310
|
+
*/
|
|
311
|
+
statistics() { return this.#client.call("statistics"); }
|
|
312
|
+
/** End the run, write requested reports, and finalize binary output; safe to repeat in `ended`.
|
|
313
|
+
* Supports partial runs and retains the owner for result reads and reruns.
|
|
314
|
+
* @returns Finalized report and caller-owned output bytes; output is empty with `saveResults: false`.
|
|
315
|
+
*/
|
|
316
|
+
finish() { return this.#advance("finish", () => this.#client.call("finish")); }
|
|
317
|
+
/** Start, run to completion, and finalize with one worker request.
|
|
318
|
+
* @param options - Run options; `saveResults` defaults to true.
|
|
319
|
+
* @returns Finalized files, retaining the owner in `ended` until closed or reused.
|
|
320
|
+
*/
|
|
321
|
+
run({ saveResults = true } = {}) {
|
|
322
|
+
validateSaveResults(saveResults);
|
|
323
|
+
return this.#advance("run", () => this.#client.call("run", saveResults));
|
|
324
|
+
}
|
|
325
|
+
/** End a `running` or `complete` run without detailed report tables.
|
|
326
|
+
* @returns Resolves after flushing output/summary statistics and entering `ended`.
|
|
327
|
+
*/
|
|
328
|
+
end() { return this.#advance("end", () => this.#client.call("end")); }
|
|
329
|
+
/** Append and flush only the runtime footer in `ended`, once, even without saved results.
|
|
330
|
+
* JavaScript exposes this before close removes its in-memory files; Python report paths survive close.
|
|
331
|
+
* @returns Resolves after the footer is flushed, without detailed report tables.
|
|
332
|
+
*/
|
|
333
|
+
finalizeReport() { return this.#advance("finalizeReport", () => this.#client.call("finalizeReport")); }
|
|
334
|
+
/** Generate requested detailed report tables and footer in `ended`, once.
|
|
335
|
+
* @returns Resolves after flushing the report.
|
|
336
|
+
* @throws Rejects when the run did not retain binary results.
|
|
337
|
+
*/
|
|
338
|
+
report() { return this.#advance("report", () => this.#client.call("report")); }
|
|
339
|
+
/** Discard run/results/output state in `open` or `ended` without reparsing the INP.
|
|
340
|
+
* Retains declarations and persistent forcings; clears staged checkpoint state.
|
|
341
|
+
* @returns Resolves with the owner in `open`.
|
|
342
|
+
*/
|
|
343
|
+
resetSolver() { return this.#advance("resetSolver", () => this.#client.call("resetSolver")); }
|
|
344
|
+
/** Put active Dynamic Wave workers to sleep; requires `running`.
|
|
345
|
+
* @returns Resolves after the power-state operation; lifecycle state is unchanged.
|
|
346
|
+
*/
|
|
347
|
+
sleepWorkers() { return this.#client.call("sleepWorkers"); }
|
|
348
|
+
/** Copy a project or generated file before close; does not flush or finalize a run.
|
|
349
|
+
* @param name - Path in the worker's project file system, not a host path.
|
|
350
|
+
* @returns Caller-owned bytes. Call {@link finish} first for finalized report/output files.
|
|
351
|
+
*/
|
|
352
|
+
readFile(name) { return this.#client.call("readFile", name); }
|
|
353
|
+
/** Release the project, workers, and in-memory files. Repeated calls share cleanup.
|
|
354
|
+
* @returns Resolves when cleanup finishes; all owner-bound handles then become unusable.
|
|
355
|
+
*/
|
|
356
|
+
async close() {
|
|
357
|
+
try {
|
|
358
|
+
await this.#client.close();
|
|
359
|
+
}
|
|
360
|
+
finally {
|
|
361
|
+
this.#closed = true;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/** Await resource cleanup for `await using`.
|
|
365
|
+
* @returns The same cleanup promise as {@link close}.
|
|
366
|
+
*/
|
|
367
|
+
[Symbol.asyncDispose]() { return this.close(); }
|
|
368
|
+
}
|
|
369
|
+
function validateSeconds(seconds) {
|
|
370
|
+
if (!Number.isInteger(seconds) || seconds < 1 || seconds > 2_147_483_647)
|
|
371
|
+
throw new RangeError("seconds must be a positive 32-bit integer");
|
|
372
|
+
}
|
|
373
|
+
function validateSaveResults(value) {
|
|
374
|
+
if (typeof value !== "boolean")
|
|
375
|
+
throw new TypeError("saveResults must be a boolean");
|
|
376
|
+
}
|
|
377
|
+
function validateThreads(threads, maximum, parallel) {
|
|
378
|
+
if (!Number.isInteger(threads) || threads < 1)
|
|
379
|
+
throw new RangeError(`threads must be an integer between 1 and ${maximum}`);
|
|
380
|
+
if (threads > 1 && !parallel)
|
|
381
|
+
throw new WorkerError({ message: "Multiple threads require cross-origin isolation with COOP/COEP headers; use threads: 1 for serial execution", operation: "open" });
|
|
382
|
+
if (threads > maximum)
|
|
383
|
+
throw new RangeError(`threads must be an integer between 1 and ${maximum}`);
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Open, run, finalize, and close one INP model. Also exported as the package default.
|
|
387
|
+
* @param input - INP contents, never a host path.
|
|
388
|
+
* @param files - Supporting-file contents keyed by INP-relative paths; defaults to an empty record.
|
|
389
|
+
* @param options - Worker and run options; retained results by default.
|
|
390
|
+
* @returns Finalized report and caller-owned binary output after cleanup.
|
|
391
|
+
* @throws Preserves the run error if cleanup also fails, attaching the secondary failure as `cleanupError`.
|
|
392
|
+
*/
|
|
393
|
+
export async function runSwmm(input, files = {}, options = {}) {
|
|
394
|
+
const simulation = await Simulation.open(input, files, options);
|
|
395
|
+
let failure;
|
|
396
|
+
try {
|
|
397
|
+
return await simulation.run(options);
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
failure = error;
|
|
401
|
+
throw error;
|
|
402
|
+
}
|
|
403
|
+
finally {
|
|
404
|
+
try {
|
|
405
|
+
await simulation.close();
|
|
406
|
+
}
|
|
407
|
+
catch (cleanupError) {
|
|
408
|
+
if (failure === undefined)
|
|
409
|
+
throw cleanupError;
|
|
410
|
+
if (failure instanceof Error)
|
|
411
|
+
Object.assign(failure, { cleanupError });
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=simulation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simulation.js","sourceRoot":"","sources":["../../src/swmmrs/simulation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detached current node hydraulics returned by `node.results()`.
|
|
3
|
+
* Values are frozen copies, not live worker views or report-period time series.
|
|
4
|
+
*/
|
|
5
|
+
export interface NodeResults {
|
|
6
|
+
/** Water depth above the invert in project length units (ft or m). */
|
|
7
|
+
readonly depth: number;
|
|
8
|
+
/** Hydraulic head in project elevation units (ft or m). */
|
|
9
|
+
readonly head: number;
|
|
10
|
+
/** Stored water volume in project volume units (ft³ or m³). */
|
|
11
|
+
readonly volume: number;
|
|
12
|
+
/** Current lateral inflow in project flow units. */
|
|
13
|
+
readonly lateralInflow: number;
|
|
14
|
+
/** Current total inflow in project flow units. */
|
|
15
|
+
readonly totalInflow: number;
|
|
16
|
+
/** Current total outflow in project flow units. */
|
|
17
|
+
readonly totalOutflow: number;
|
|
18
|
+
/** Current loss rate in project flow units. */
|
|
19
|
+
readonly losses: number;
|
|
20
|
+
/** Current flooding rate in project flow units. */
|
|
21
|
+
readonly flooding: number;
|
|
22
|
+
/** Storage-node hydraulic retention time in seconds; `null` for other node kinds. */
|
|
23
|
+
readonly hydraulicRetentionSeconds: number | null;
|
|
24
|
+
}
|
|
25
|
+
/** Detached current link hydraulics from `link.results()`, not a historical series. */
|
|
26
|
+
export interface LinkResults {
|
|
27
|
+
/** Current opening or pump-speed factor. */
|
|
28
|
+
readonly setting: number;
|
|
29
|
+
/** Target opening or pump-speed factor; native control rules may change it. */
|
|
30
|
+
readonly targetSetting: number;
|
|
31
|
+
/** Open duration in seconds. */
|
|
32
|
+
readonly timeOpenSeconds: number;
|
|
33
|
+
/** Closed duration in seconds. */
|
|
34
|
+
readonly timeClosedSeconds: number;
|
|
35
|
+
/** Signed flow in configured orientation, in project flow units. */
|
|
36
|
+
readonly flow: number;
|
|
37
|
+
/** Water depth in ft or m. */
|
|
38
|
+
readonly depth: number;
|
|
39
|
+
/** Velocity magnitude in ft/s or m/s. */
|
|
40
|
+
readonly velocity: number;
|
|
41
|
+
/** Conduit surface width in ft or m; null for other link kinds. */
|
|
42
|
+
readonly topWidth: number | null;
|
|
43
|
+
/** Stored water volume in ft³ or m³. */
|
|
44
|
+
readonly volume: number;
|
|
45
|
+
/** Conduit capacity ratio, or non-conduit setting. */
|
|
46
|
+
readonly capacity: number;
|
|
47
|
+
/** Upstream surface area in ft² or m². */
|
|
48
|
+
readonly upstreamSurfaceArea: number;
|
|
49
|
+
/** Downstream surface area in ft² or m². */
|
|
50
|
+
readonly downstreamSurfaceArea: number;
|
|
51
|
+
/** Dimensionless Froude number. */
|
|
52
|
+
readonly froudeNumber: number;
|
|
53
|
+
}
|
|
54
|
+
/** Detached current subcatchment runoff values, available while results exist. */
|
|
55
|
+
export interface SubcatchmentResults {
|
|
56
|
+
/** Rainfall rate in in/h or mm/h. */
|
|
57
|
+
readonly rainfall: number;
|
|
58
|
+
/** Evaporation rate in in/day or mm/day. */
|
|
59
|
+
readonly evaporation: number;
|
|
60
|
+
/** Infiltration rate in in/h or mm/h. */
|
|
61
|
+
readonly infiltration: number;
|
|
62
|
+
/** Runon in project flow units. */
|
|
63
|
+
readonly runon: number;
|
|
64
|
+
/** Runoff in project flow units. */
|
|
65
|
+
readonly runoff: number;
|
|
66
|
+
/** Snow depth in inches or millimetres. */
|
|
67
|
+
readonly snowDepth: number;
|
|
68
|
+
}
|
|
69
|
+
/** Detached current rain-gage rates in in/h or mm/h, not accumulated depths. */
|
|
70
|
+
export interface RainGageResults {
|
|
71
|
+
/** Total current precipitation rate. */
|
|
72
|
+
readonly totalPrecip: number;
|
|
73
|
+
/** Current rainfall rate. */
|
|
74
|
+
readonly rainfall: number;
|
|
75
|
+
/** Current snowfall rate. */
|
|
76
|
+
readonly snowfall: number;
|
|
77
|
+
/** Selected persistent API source rate, or null when not selected. */
|
|
78
|
+
readonly externalPrecipitationRate: number | null;
|
|
79
|
+
/** Highest-priority rainfall override rate, or null when cleared. */
|
|
80
|
+
readonly rainfallOverride: number | null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Detached, timestamp-free columns with one value per canonical object ID.
|
|
84
|
+
* Requested selection order is preserved; an empty selection yields empty columns.
|
|
85
|
+
* @typeParam T - Per-object result record defining each column's values and units.
|
|
86
|
+
*/
|
|
87
|
+
export type Snapshot<T> = {
|
|
88
|
+
/** Canonical object IDs defining every column's order. */
|
|
89
|
+
readonly objectIds: readonly string[];
|
|
90
|
+
} & {
|
|
91
|
+
readonly [K in keyof T]: readonly T[K][];
|
|
92
|
+
};
|
|
93
|
+
/** Aligned node hydraulic columns; keep the observation time separately. */
|
|
94
|
+
export type NodeSnapshot = Snapshot<NodeResults>;
|
|
95
|
+
/** Aligned link hydraulic columns; keep the observation time separately. */
|
|
96
|
+
export type LinkSnapshot = Snapshot<LinkResults>;
|
|
97
|
+
/** Aligned subcatchment runoff columns; keep the observation time separately. */
|
|
98
|
+
export type SubcatchmentSnapshot = Snapshot<SubcatchmentResults>;
|
|
99
|
+
/** Cumulative routing volumes in project volume units; continuity error is percent. */
|
|
100
|
+
export interface RoutingTotals {
|
|
101
|
+
/** Dry-weather inflow volume. */
|
|
102
|
+
readonly dryWeatherInflow: number;
|
|
103
|
+
/** Wet-weather inflow volume. */
|
|
104
|
+
readonly wetWeatherInflow: number;
|
|
105
|
+
/** Groundwater inflow volume. */
|
|
106
|
+
readonly groundwaterInflow: number;
|
|
107
|
+
/** RDII inflow volume. */
|
|
108
|
+
readonly rdiiInflow: number;
|
|
109
|
+
/** External inflow volume. */
|
|
110
|
+
readonly externalInflow: number;
|
|
111
|
+
/** Flooding volume. */
|
|
112
|
+
readonly flooding: number;
|
|
113
|
+
/** Outfall discharge volume. */
|
|
114
|
+
readonly outflow: number;
|
|
115
|
+
/** Evaporation loss volume. */
|
|
116
|
+
readonly evaporationLoss: number;
|
|
117
|
+
/** Seepage loss volume. */
|
|
118
|
+
readonly seepageLoss: number;
|
|
119
|
+
/** Reaction loss in the native routing balance. */
|
|
120
|
+
readonly reactionLoss: number;
|
|
121
|
+
/** Initial system storage volume. */
|
|
122
|
+
readonly initialStorage: number;
|
|
123
|
+
/** Final system storage volume. */
|
|
124
|
+
readonly finalStorage: number;
|
|
125
|
+
/** Routing continuity error in percent. */
|
|
126
|
+
readonly continuityError: number;
|
|
127
|
+
}
|
|
128
|
+
/** Cumulative runoff water-balance depths in inches or millimetres, except percent continuity error. */
|
|
129
|
+
export interface RunoffTotals {
|
|
130
|
+
/** Rainfall depth. */
|
|
131
|
+
readonly rainfall: number;
|
|
132
|
+
/** Evaporation loss depth. */
|
|
133
|
+
readonly evaporationLoss: number;
|
|
134
|
+
/** Infiltration loss depth. */
|
|
135
|
+
readonly infiltrationLoss: number;
|
|
136
|
+
/** Runoff depth. */
|
|
137
|
+
readonly runoff: number;
|
|
138
|
+
/** LID drainage depth. */
|
|
139
|
+
readonly lidDrainage: number;
|
|
140
|
+
/** Outfall runon depth. */
|
|
141
|
+
readonly outfallRunon: number;
|
|
142
|
+
/** Initial surface-storage depth. */
|
|
143
|
+
readonly initialSurfaceStorage: number;
|
|
144
|
+
/** Final surface-storage depth. */
|
|
145
|
+
readonly finalSurfaceStorage: number;
|
|
146
|
+
/** Initial snow-cover depth. */
|
|
147
|
+
readonly initialSnowCover: number;
|
|
148
|
+
/** Final snow-cover depth. */
|
|
149
|
+
readonly finalSnowCover: number;
|
|
150
|
+
/** Removed snow depth. */
|
|
151
|
+
readonly snowRemoved: number;
|
|
152
|
+
/** Runoff continuity error in percent. */
|
|
153
|
+
readonly continuityError: number;
|
|
154
|
+
}
|
|
155
|
+
/** Detached time-step and convergence diagnostics for the current run. */
|
|
156
|
+
export interface RoutingDiagnostics {
|
|
157
|
+
/** Average routing step in seconds. */
|
|
158
|
+
readonly averageTimeStepSeconds: number;
|
|
159
|
+
/** Minimum routing step in seconds. */
|
|
160
|
+
readonly minimumTimeStepSeconds: number;
|
|
161
|
+
/** Maximum routing step in seconds. */
|
|
162
|
+
readonly maximumTimeStepSeconds: number;
|
|
163
|
+
/** Number of routing steps. */
|
|
164
|
+
readonly stepCount: number;
|
|
165
|
+
/** Number of nonconverged steps. */
|
|
166
|
+
readonly nonconvergedStepCount: number;
|
|
167
|
+
/** Nonconverged steps as a percentage of all steps. */
|
|
168
|
+
readonly nonconvergedStepPercentage: number;
|
|
169
|
+
/** Average trial iterations per routing step. */
|
|
170
|
+
readonly averageIterations: number;
|
|
171
|
+
}
|
|
172
|
+
/** Cumulative system records from `simulation.statistics()` in `running` or `complete`, before ending. */
|
|
173
|
+
export interface SimulationStatistics {
|
|
174
|
+
/** Routing-volume continuity balance. */
|
|
175
|
+
readonly routingTotals: RoutingTotals;
|
|
176
|
+
/** Runoff-depth continuity balance. */
|
|
177
|
+
readonly runoffTotals: RunoffTotals;
|
|
178
|
+
/** Groundwater continuity error in percent. */
|
|
179
|
+
readonly groundwaterContinuityError: number;
|
|
180
|
+
/** System quality continuity error in percent. */
|
|
181
|
+
readonly qualityContinuityError: number;
|
|
182
|
+
/** Routing time-step and convergence data. */
|
|
183
|
+
readonly routingDiagnostics: RoutingDiagnostics;
|
|
184
|
+
/** Pollutant-ID balances; seepage follows native report units, including safe log10 units for counts. */
|
|
185
|
+
readonly qualityBalances: Readonly<Record<string, {
|
|
186
|
+
/** Pollutant continuity error in percent. */
|
|
187
|
+
readonly continuityError: number;
|
|
188
|
+
/** Pollutant seepage loss in native report units. */
|
|
189
|
+
readonly seepageLoss: number;
|
|
190
|
+
}>>;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=snapshots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshots.d.ts","sourceRoot":"","sources":["../../src/swmmrs/snapshots.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshots.js","sourceRoot":"","sources":["../../src/swmmrs/snapshots.ts"],"names":[],"mappings":""}
|