Close volume balance and minor fixes
This commit is contained in:
@@ -43,7 +43,7 @@
|
||||
<input type="text" id="node-input-name" placeholder="Name">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-F2"><i class="fa fa-tag"></i> Recirculation debit [m3 s-1]</label>
|
||||
<label for="node-input-F2"><i class="fa fa-tag"></i> Recirculation debit [m3 d-1]</label>
|
||||
<input type="text" id="node-input-F2" placeholder="m3 s-1">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
|
||||
@@ -11,12 +11,12 @@ module.exports = function(RED) {
|
||||
switch (msg.topic) {
|
||||
case "Fluent":
|
||||
// conserve volume flow debit
|
||||
let F1 = msg.payload.F;
|
||||
let F_diff = Math.max(F1 - F2, 0);
|
||||
let F2_corr = F1 < F2 ? F1 : F2;
|
||||
let F_in = msg.payload.F;
|
||||
let F1 = Math.max(F_in - F2, 0);
|
||||
let F2_corr = F_in < F2 ? F_in : F2;
|
||||
|
||||
let msg_F1 = structuredClone(msg);
|
||||
msg_F1.payload.F = F_diff;
|
||||
msg_F1.payload.F = F1;
|
||||
|
||||
let msg_F2 = {...msg};
|
||||
msg_F2.payload.F = F2_corr;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
color: "#e4a363",
|
||||
defaults: {
|
||||
name: { value: "" },
|
||||
SVI: { value: 0.1, required: true },
|
||||
TS_set: { value: 0.1, required: true },
|
||||
inlet: { value: 1, required: true }
|
||||
},
|
||||
inputs: 1,
|
||||
@@ -15,7 +15,7 @@
|
||||
return this.name || "Settling basin";
|
||||
},
|
||||
oneditprepare: function() {
|
||||
$("#node-input-SVI").typedInput({
|
||||
$("#node-input-TS_set").typedInput({
|
||||
type:"num",
|
||||
types:["num"]
|
||||
});
|
||||
@@ -25,9 +25,9 @@
|
||||
});
|
||||
},
|
||||
oneditsave: function() {
|
||||
let SVI = parseFloat($("#node-input-SVI").typedInput("value"));
|
||||
if (isNaN(SVI) || SVI < 0) {
|
||||
RED.notify("SVI is not set correctly", {type: "error"});
|
||||
let TS_set = parseFloat($("#node-input-TS_set").typedInput("value"));
|
||||
if (isNaN(TS_set) || TS_set < 0) {
|
||||
RED.notify("TS is not set correctly", {type: "error"});
|
||||
}
|
||||
let inlet = parseInt($("#node-input-n_inlets").typedInput("value"));
|
||||
if (inlet < 1) {
|
||||
@@ -43,8 +43,8 @@
|
||||
<input type="text" id="node-input-name" placeholder="Name">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-SVI"><i class="fa fa-tag"></i> SVI (alternate)</label>
|
||||
<input type="text" id="node-input-SVI" placeholder="">
|
||||
<label for="node-input-TS_set"><i class="fa fa-tag"></i> Total Solids set point [g m-3]</label>
|
||||
<input type="text" id="node-input-TS_set" placeholder="">
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label for="node-input-inlet"><i class="fa fa-tag"></i> Assigned inlet return line</label>
|
||||
|
||||
@@ -4,7 +4,7 @@ module.exports = function(RED) {
|
||||
var node = this;
|
||||
|
||||
let name = config.name;
|
||||
let SVI = parseFloat(config.SVI);
|
||||
let TS_set = parseFloat(config.TS_set);
|
||||
const inlet_sludge = parseInt(config.inlet);
|
||||
|
||||
node.on('input', function(msg, send, done) {
|
||||
@@ -13,11 +13,13 @@ module.exports = function(RED) {
|
||||
// conserve volume flow debit
|
||||
let F_in = msg.payload.F;
|
||||
let C_in = msg.payload.C;
|
||||
let X_in = (C_in[7] + C_in[8] + C_in[9] + C_in[10] + C_in[11] + C_in[12]);
|
||||
let F2 = (F_in * X_in) / (SVI*1000*1000);
|
||||
let F2 = (F_in * C_in[12]) / TS_set;
|
||||
|
||||
let F1 = Math.max(F_in - F2, 0);
|
||||
let F2_corr = F_in < F2 ? F_in : F2;
|
||||
|
||||
let msg_F1 = structuredClone(msg);
|
||||
msg_F1.payload.F = F_in - F2;
|
||||
msg_F1.payload.F = F1;
|
||||
msg_F1.payload.C[7] = 0;
|
||||
msg_F1.payload.C[8] = 0;
|
||||
msg_F1.payload.C[9] = 0;
|
||||
@@ -26,8 +28,8 @@ module.exports = function(RED) {
|
||||
msg_F1.payload.C[12] = 0;
|
||||
|
||||
let msg_F2 = {...msg};
|
||||
msg_F2.payload.F = F2;
|
||||
if (F2 != 0) {
|
||||
msg_F2.payload.F = F2_corr;
|
||||
if (F2_corr > 0) {
|
||||
msg_F2.payload.C[7] = F_in * C_in[7] / F2;
|
||||
msg_F2.payload.C[8] = F_in * C_in[8] / F2;
|
||||
msg_F2.payload.C[9] = F_in * C_in[9] / F2;
|
||||
|
||||
Reference in New Issue
Block a user