Update state handling in reactor class and optimize time iteration logic

This commit is contained in:
2025-11-14 13:11:09 +01:00
parent f3bbf63602
commit cc89833530
2 changed files with 14 additions and 14 deletions

View File

@@ -37,6 +37,7 @@ class nodeClass {
break;
case "Fluent":
this.source.setInfluent = msg;
this.source.updateState(msg.timestamp);
break;
case "OTR":
this.source.setOTR = msg;

View File

@@ -214,24 +214,23 @@ class Reactor {
this.setInfluent = this.upstreamReactor.getEffluent[0];
}
if (newTime === this.currentTime) {
// no update necessary
const n_iter = Math.floor(this.speedUpFactor * (newTime-this.currentTime) / (this.timeStep*DAY2MS));
if (n_iter == 0) {
// no update required
return;
}
const n_iter = Math.floor(this.speedUpFactor * (newTime-this.currentTime) / (this.timeStep*DAY2MS));
if (n_iter) {
let n = 0;
while (n < n_iter) {
this.tick(this.timeStep);
n += 1;
}
this.currentTime += n_iter * this.timeStep * DAY2MS / this.speedUpFactor;
this.emitter.emit("stateChange", this.currentTime);
let n = 0;
while (n < n_iter) {
this.tick(this.timeStep);
n += 1;
}
this.currentTime += n_iter * this.timeStep * DAY2MS / this.speedUpFactor;
this.emitter.emit("stateChange", this.currentTime);
if (this.returnPump) {
this.returnPump.updateSourceSink();
}
if (this.returnPump) {
this.returnPump.updateSourceSink();
}
}
}