diff --git a/advanced-reactor.html b/advanced-reactor.html index d63f531..d63f71b 100644 --- a/advanced-reactor.html +++ b/advanced-reactor.html @@ -23,10 +23,14 @@ outputs: 1, icon: "font-awesome/fa-recycle", label: function() { - return this.name||"advanced-reactor"; + return this.name || "advanced-reactor"; }, oneditprepare: function() { - $(".typed-num").typedInput({ + $("#node-input-volume").typedInput({ + type:"num", + types:["num"] + }); + $(".concentrations").typedInput({ type:"num", types:["num"] }); @@ -48,61 +52,61 @@

Reactor properties

- +

Dissolved components

- +
- +
- +
- +
- +
- +
- +

Particulate components

- +
- +
- +
- +
- +
- +
diff --git a/advanced-reactor.js b/advanced-reactor.js index 20d6081..bd364c8 100644 --- a/advanced-reactor.js +++ b/advanced-reactor.js @@ -10,25 +10,35 @@ module.exports = function(RED) { const reactor = new Reactor( config.volume, [ - config.S_O_init, - config.S_I_init, - config.S_S_init, - config.S_NH_init, - config.S_N2_init, - config.S_NO_init, - config.S_HCO_init, - config.X_I_init, - config.X_S_init, - config.X_H_init, - config.X_STO_init, - config.X_A_init, - config.X_TS_init + parseFloat(config.S_O_init), + parseFloat(config.S_I_init), + parseFloat(config.S_S_init), + parseFloat(config.S_NH_init), + parseFloat(config.S_N2_init), + parseFloat(config.S_NO_init), + parseFloat(config.S_HCO_init), + parseFloat(config.X_I_init), + parseFloat(config.X_S_init), + parseFloat(config.X_H_init), + parseFloat(config.X_STO_init), + parseFloat(config.X_A_init), + parseFloat(config.X_TS_init) ] ); node.on('input', function(msg, send, done) { - if (msg.topic == "clock") { - reactor.updateState(msg); + switch (msg.topic) { + case "clock": + reactor.updateState(msg); + break; + case "Influx": + reactor.setInflux = msg; + break; + case "OTR": + reactor.setOTR = msg; + break; + default: + console.log("Unknown topic: " + msg.topic) } if (done) { diff --git a/dependencies/reactor_class.js b/dependencies/reactor_class.js index 80aa3b6..a50ca23 100644 --- a/dependencies/reactor_class.js +++ b/dependencies/reactor_class.js @@ -9,14 +9,23 @@ class Reactor_CSTR { this.asm = new ASM3(); this.Vl = volume; // fluid volume reactor [m3] - this.F = 1.0; // fluid debit [m3 d-1] - this.C_in = [0., 30., 100., 16., 0., 0., 5., 25., 75., 30., 0., 0., 125.]; // composition influent - this.OTR = 100.0; // oxygen transfer rate [g O2 d-1] + this.F = 0.0; // fluid debit [m3 d-1] + this.C_in = Array(13).fill(0.0); // composition influent + this.OTR = 0.0; // oxygen transfer rate [g O2 d-1] this.currentTime = Date.now(); // milliseconds since epoch [ms] this.timeStep = 1/(24*60*15) // time step [d] } + set setInflux(input) { // setter for C_in (WIP) + this.F = input.payload.F; + this.C_in = input.payload.C_in; + } + + set setOTR(input) { // setter for OTR (WIP) [g O2 d-1] + this.OTR = input.payload; + } + // expect update with timestamp updateState(input) { let newTime = input.payload;