diff --git a/additional_nodes/recirculation-pump.html b/additional_nodes/recirculation-pump.html
deleted file mode 100644
index 39a3753..0000000
--- a/additional_nodes/recirculation-pump.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
diff --git a/additional_nodes/recirculation-pump.js b/additional_nodes/recirculation-pump.js
deleted file mode 100644
index 2a02932..0000000
--- a/additional_nodes/recirculation-pump.js
+++ /dev/null
@@ -1,40 +0,0 @@
-module.exports = function(RED) {
- function recirculation(config) {
- RED.nodes.createNode(this, config);
- var node = this;
-
- let name = config.name;
- let F2 = parseFloat(config.F2);
- const inlet_F2 = parseInt(config.inlet);
-
- node.on('input', function(msg, send, done) {
- switch (msg.topic) {
- case "Fluent":
- // conserve volume flow debit
- 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 = F1;
-
- let msg_F2 = {...msg};
- msg_F2.payload.F = F2_corr;
- msg_F2.payload.inlet = inlet_F2;
-
- send([msg_F1, msg_F2]);
- break;
- case "clock":
- break;
- default:
- console.log("Unknown topic: " + msg.topic);
- }
-
- if (done) {
- done();
- }
- });
-
- }
- RED.nodes.registerType("recirculation-pump", recirculation);
-};
diff --git a/additional_nodes/settling-basin.html b/additional_nodes/settling-basin.html
deleted file mode 100644
index e8e8e8d..0000000
--- a/additional_nodes/settling-basin.html
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
diff --git a/additional_nodes/settling-basin.js b/additional_nodes/settling-basin.js
deleted file mode 100644
index dd3d697..0000000
--- a/additional_nodes/settling-basin.js
+++ /dev/null
@@ -1,57 +0,0 @@
-module.exports = function(RED) {
- function settler(config) {
- RED.nodes.createNode(this, config);
- var node = this;
-
- let name = config.name;
- let TS_set = parseFloat(config.TS_set);
- const inlet_sludge = parseInt(config.inlet);
-
- node.on('input', function(msg, send, done) {
- switch (msg.topic) {
- case "Fluent":
- // conserve volume flow debit
- let F_in = msg.payload.F;
- let C_in = msg.payload.C;
- 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 = F1;
- msg_F1.payload.C[7] = 0;
- msg_F1.payload.C[8] = 0;
- msg_F1.payload.C[9] = 0;
- msg_F1.payload.C[10] = 0;
- msg_F1.payload.C[11] = 0;
- msg_F1.payload.C[12] = 0;
-
- let msg_F2 = {...msg};
- 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;
- msg_F2.payload.C[10] = F_in * C_in[10] / F2;
- msg_F2.payload.C[11] = F_in * C_in[11] / F2;
- msg_F2.payload.C[12] = F_in * C_in[12] / F2;
- }
- msg_F2.payload.inlet = inlet_sludge;
-
- send([msg_F1, msg_F2]);
- break;
- case "clock":
- break;
- default:
- console.log("Unknown topic: " + msg.topic);
- }
-
- if (done) {
- done();
- }
- });
-
- }
- RED.nodes.registerType("settling-basin", settler);
-};
diff --git a/flows/asm3_flows.json b/flows/asm3_flows.json
deleted file mode 100644
index 7f6d216..0000000
--- a/flows/asm3_flows.json
+++ /dev/null
@@ -1,1763 +0,0 @@
-[
- {
- "id": "31bba0914516dd85",
- "type": "tab",
- "label": "Flow 2",
- "disabled": true,
- "info": "",
- "env": []
- },
- {
- "id": "0abdac5260d9553e",
- "type": "tab",
- "label": "Flow 1",
- "disabled": false,
- "info": "",
- "env": []
- },
- {
- "id": "394f713d4e71366c",
- "type": "tab",
- "label": "Flow 4",
- "disabled": true,
- "info": "",
- "env": []
- },
- {
- "id": "2c8bcaa0046b4323",
- "type": "ui-theme",
- "name": "Default",
- "colors": {
- "surface": "#ffffff",
- "primary": "#0094ce",
- "bgPage": "#eeeeee",
- "groupBg": "#ffffff",
- "groupOutline": "#cccccc"
- },
- "sizes": {
- "density": "default",
- "pagePadding": "12px",
- "groupGap": "12px",
- "groupBorderRadius": "4px",
- "widgetGap": "12px"
- }
- },
- {
- "id": "ac25cd90dc999a5a",
- "type": "ui-base",
- "name": "UI Name",
- "path": "/dashboard",
- "appIcon": "",
- "includeClientData": true,
- "acceptsClientConfig": [
- "ui-notification",
- "ui-control"
- ],
- "showPathInSidebar": false,
- "headerContent": "page",
- "navigationStyle": "default",
- "titleBarStyle": "default",
- "showReconnectNotification": true,
- "notificationDisplayTime": 1,
- "showDisconnectNotification": true,
- "allowInstall": true
- },
- {
- "id": "ec4a923c5ead6278",
- "type": "ui-page",
- "name": "Dashboard",
- "ui": "ac25cd90dc999a5a",
- "path": "/page1",
- "icon": "home",
- "layout": "grid",
- "theme": "2c8bcaa0046b4323",
- "breakpoints": [
- {
- "name": "Default",
- "px": "0",
- "cols": "3"
- },
- {
- "name": "Tablet",
- "px": "576",
- "cols": "6"
- },
- {
- "name": "Small Desktop",
- "px": "768",
- "cols": "9"
- },
- {
- "name": "Desktop",
- "px": "1024",
- "cols": "12"
- }
- ],
- "order": -1,
- "className": "",
- "visible": "true",
- "disabled": "false"
- },
- {
- "id": "58b5e9368ec5774b",
- "type": "ui-group",
- "name": "Group 1",
- "page": "ec4a923c5ead6278",
- "width": 6,
- "height": 1,
- "order": -1,
- "showTitle": true,
- "className": "",
- "visible": "true",
- "disabled": "false",
- "groupType": "default"
- },
- {
- "id": "14172c57f4c6ff14",
- "type": "ui-group",
- "name": "Group 2",
- "page": "ec4a923c5ead6278",
- "width": 6,
- "height": 1,
- "order": -1,
- "showTitle": true,
- "className": "",
- "visible": "true",
- "disabled": "false",
- "groupType": "default"
- },
- {
- "id": "ca564642bfc5606c",
- "type": "ui-page",
- "name": "PFR",
- "ui": "ac25cd90dc999a5a",
- "path": "/page2",
- "icon": "home",
- "layout": "grid",
- "theme": "2c8bcaa0046b4323",
- "breakpoints": [
- {
- "name": "Default",
- "px": "0",
- "cols": "3"
- },
- {
- "name": "Tablet",
- "px": "576",
- "cols": "6"
- },
- {
- "name": "Small Desktop",
- "px": "768",
- "cols": "9"
- },
- {
- "name": "Desktop",
- "px": "1024",
- "cols": "12"
- }
- ],
- "order": -1,
- "className": "",
- "visible": "true",
- "disabled": "false"
- },
- {
- "id": "ae38454098a37db0",
- "type": "ui-group",
- "name": "Group 3",
- "page": "ca564642bfc5606c",
- "width": 6,
- "height": 1,
- "order": -1,
- "showTitle": true,
- "className": "",
- "visible": "true",
- "disabled": "false",
- "groupType": "default"
- },
- {
- "id": "de8b029d69f26c0e",
- "type": "ui-group",
- "name": "Group 4",
- "page": "ca564642bfc5606c",
- "width": 6,
- "height": 1,
- "order": -1,
- "showTitle": true,
- "className": "",
- "visible": "true",
- "disabled": "false",
- "groupType": "default"
- },
- {
- "id": "f7803caf86a911f6",
- "type": "inject",
- "z": "31bba0914516dd85",
- "name": "",
- "props": [
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- },
- {
- "p": "topic",
- "vt": "str"
- }
- ],
- "repeat": "1",
- "crontab": "",
- "once": true,
- "onceDelay": 0.1,
- "topic": "clock",
- "x": 200,
- "y": 340,
- "wires": [
- [
- "5266f4e09e7b919b"
- ]
- ]
- },
- {
- "id": "98f5ffa4bed3b99f",
- "type": "inject",
- "z": "31bba0914516dd85",
- "name": "Influx composition",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- },
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- }
- ],
- "repeat": "",
- "crontab": "",
- "once": true,
- "onceDelay": "5",
- "topic": "Fluent",
- "payload": "{\"inlet\":0,\"F\":1000,\"C\":[0,30,100,16,0,0,5,25,75,30,0,0,125]}",
- "payloadType": "json",
- "x": 170,
- "y": 260,
- "wires": [
- [
- "5266f4e09e7b919b"
- ]
- ]
- },
- {
- "id": "f1b3cffbd2d38473",
- "type": "ui-chart",
- "z": "31bba0914516dd85",
- "group": "14172c57f4c6ff14",
- "name": "Effluent",
- "label": "Effluent",
- "order": 9007199254740991,
- "chartType": "line",
- "category": "Series",
- "categoryType": "property",
- "xAxisLabel": "",
- "xAxisProperty": "",
- "xAxisPropertyType": "timestamp",
- "xAxisType": "time",
- "xAxisFormat": "",
- "xAxisFormatType": "auto",
- "xmin": "",
- "xmax": "",
- "yAxisLabel": "",
- "yAxisProperty": "Y",
- "yAxisPropertyType": "property",
- "ymin": "",
- "ymax": "",
- "bins": 10,
- "action": "append",
- "stackSeries": false,
- "pointShape": "circle",
- "pointRadius": 4,
- "showLegend": true,
- "removeOlder": "8",
- "removeOlderUnit": "3600",
- "removeOlderPoints": "2000",
- "colors": [
- "#0095ff",
- "#ff0000",
- "#ff7f0e",
- "#2ca02c",
- "#a347e1",
- "#d62728",
- "#ff9896",
- "#9467bd",
- "#c5b0d5"
- ],
- "textColor": [
- "#666666"
- ],
- "textColorDefault": true,
- "gridColor": [
- "#e5e5e5"
- ],
- "gridColorDefault": true,
- "width": 6,
- "height": 8,
- "className": "",
- "interpolation": "linear",
- "x": 1420,
- "y": 300,
- "wires": [
- []
- ]
- },
- {
- "id": "fc4aa2928bdbe228",
- "type": "function",
- "z": "31bba0914516dd85",
- "name": "Data_converter",
- "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO}\n ]};\n\nreturn msg;",
- "outputs": 1,
- "timeout": 0,
- "noerr": 0,
- "initialize": "",
- "finalize": "",
- "libs": [],
- "x": 1220,
- "y": 300,
- "wires": [
- [
- "f1b3cffbd2d38473"
- ]
- ]
- },
- {
- "id": "e955d0c2d3246c4b",
- "type": "ui-chart",
- "z": "31bba0914516dd85",
- "group": "58b5e9368ec5774b",
- "name": "Anoxic reactor",
- "label": "Anoxic reactor",
- "order": 9007199254740991,
- "chartType": "line",
- "category": "Series",
- "categoryType": "property",
- "xAxisLabel": "",
- "xAxisProperty": "",
- "xAxisPropertyType": "timestamp",
- "xAxisType": "time",
- "xAxisFormat": "",
- "xAxisFormatType": "auto",
- "xmin": "",
- "xmax": "",
- "yAxisLabel": "",
- "yAxisProperty": "Y",
- "yAxisPropertyType": "property",
- "ymin": "",
- "ymax": "",
- "bins": 10,
- "action": "append",
- "stackSeries": false,
- "pointShape": "circle",
- "pointRadius": 4,
- "showLegend": true,
- "removeOlder": "8",
- "removeOlderUnit": "3600",
- "removeOlderPoints": "2000",
- "colors": [
- "#0095ff",
- "#ff0000",
- "#ff7f0e",
- "#2ca02c",
- "#a347e1",
- "#d62728",
- "#ff9896",
- "#9467bd",
- "#c5b0d5"
- ],
- "textColor": [
- "#666666"
- ],
- "textColorDefault": true,
- "gridColor": [
- "#e5e5e5"
- ],
- "gridColorDefault": true,
- "width": 6,
- "height": 8,
- "className": "",
- "interpolation": "linear",
- "x": 1040,
- "y": 180,
- "wires": [
- []
- ]
- },
- {
- "id": "59f0787fadf99939",
- "type": "function",
- "z": "31bba0914516dd85",
- "name": "Data_converter",
- "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO},\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;",
- "outputs": 1,
- "timeout": 0,
- "noerr": 0,
- "initialize": "",
- "finalize": "",
- "libs": [],
- "x": 820,
- "y": 180,
- "wires": [
- [
- "e955d0c2d3246c4b"
- ]
- ]
- },
- {
- "id": "bb63e864735f963f",
- "type": "ui-chart",
- "z": "31bba0914516dd85",
- "group": "14172c57f4c6ff14",
- "name": "Sludge composition",
- "label": "Sludge composition",
- "order": 9007199254740991,
- "chartType": "line",
- "category": "Series",
- "categoryType": "property",
- "xAxisLabel": "",
- "xAxisProperty": "",
- "xAxisPropertyType": "timestamp",
- "xAxisType": "time",
- "xAxisFormat": "",
- "xAxisFormatType": "auto",
- "xmin": "",
- "xmax": "",
- "yAxisLabel": "",
- "yAxisProperty": "Y",
- "yAxisPropertyType": "property",
- "ymin": "",
- "ymax": "",
- "bins": 10,
- "action": "append",
- "stackSeries": false,
- "pointShape": "circle",
- "pointRadius": 4,
- "showLegend": true,
- "removeOlder": "8",
- "removeOlderUnit": "3600",
- "removeOlderPoints": "2000",
- "colors": [
- "#0095ff",
- "#ff0000",
- "#ff7f0e",
- "#2ca02c",
- "#a347e1",
- "#d62728",
- "#ff9896",
- "#9467bd",
- "#c5b0d5"
- ],
- "textColor": [
- "#666666"
- ],
- "textColorDefault": true,
- "gridColor": [
- "#e5e5e5"
- ],
- "gridColorDefault": true,
- "width": 6,
- "height": 8,
- "className": "",
- "interpolation": "linear",
- "x": 1450,
- "y": 340,
- "wires": [
- []
- ]
- },
- {
- "id": "ca96bcb7f32f011f",
- "type": "function",
- "z": "31bba0914516dd85",
- "name": "Data_converter",
- "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;",
- "outputs": 1,
- "timeout": 0,
- "noerr": 0,
- "initialize": "",
- "finalize": "",
- "libs": [],
- "x": 1220,
- "y": 340,
- "wires": [
- [
- "bb63e864735f963f"
- ]
- ]
- },
- {
- "id": "9327869b411c3063",
- "type": "ui-chart",
- "z": "31bba0914516dd85",
- "group": "58b5e9368ec5774b",
- "name": "Aerobic reactor",
- "label": "Aerobic reactor / recirculation",
- "order": 9007199254740991,
- "chartType": "line",
- "category": "Series",
- "categoryType": "property",
- "xAxisLabel": "",
- "xAxisProperty": "",
- "xAxisPropertyType": "timestamp",
- "xAxisType": "time",
- "xAxisFormat": "",
- "xAxisFormatType": "auto",
- "xmin": "",
- "xmax": "",
- "yAxisLabel": "",
- "yAxisProperty": "Y",
- "yAxisPropertyType": "property",
- "ymin": "",
- "ymax": "",
- "bins": 10,
- "action": "append",
- "stackSeries": false,
- "pointShape": "circle",
- "pointRadius": 4,
- "showLegend": true,
- "removeOlder": "8",
- "removeOlderUnit": "3600",
- "removeOlderPoints": "2000",
- "colors": [
- "#0095ff",
- "#ff0000",
- "#ff7f0e",
- "#2ca02c",
- "#a347e1",
- "#d62728",
- "#ff9896",
- "#9467bd",
- "#c5b0d5"
- ],
- "textColor": [
- "#666666"
- ],
- "textColorDefault": true,
- "gridColor": [
- "#e5e5e5"
- ],
- "gridColorDefault": true,
- "width": 6,
- "height": 8,
- "className": "",
- "interpolation": "linear",
- "x": 1440,
- "y": 260,
- "wires": [
- []
- ]
- },
- {
- "id": "3cb7fec9537ac405",
- "type": "function",
- "z": "31bba0914516dd85",
- "name": "Data_converter",
- "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO},\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;",
- "outputs": 1,
- "timeout": 0,
- "noerr": 0,
- "initialize": "",
- "finalize": "",
- "libs": [],
- "x": 1220,
- "y": 260,
- "wires": [
- [
- "9327869b411c3063"
- ]
- ]
- },
- {
- "id": "640ecab878ee623a",
- "type": "debug",
- "z": "31bba0914516dd85",
- "name": "Sludge removal",
- "active": true,
- "tosidebar": true,
- "console": false,
- "tostatus": false,
- "complete": "payload",
- "targetType": "msg",
- "statusVal": "",
- "statusType": "auto",
- "x": 1160,
- "y": 420,
- "wires": []
- },
- {
- "id": "8e1117ff307f949b",
- "type": "debug",
- "z": "31bba0914516dd85",
- "name": "Sludge recirculation",
- "active": true,
- "tosidebar": true,
- "console": false,
- "tostatus": false,
- "complete": "payload",
- "targetType": "msg",
- "statusVal": "",
- "statusType": "auto",
- "x": 930,
- "y": 420,
- "wires": []
- },
- {
- "id": "d9e3b28718762905",
- "type": "debug",
- "z": "31bba0914516dd85",
- "name": "Effluent",
- "active": true,
- "tosidebar": true,
- "console": false,
- "tostatus": false,
- "complete": "payload",
- "targetType": "msg",
- "statusVal": "",
- "statusType": "auto",
- "x": 680,
- "y": 420,
- "wires": []
- },
- {
- "id": "9534da473265bb6a",
- "type": "recirculation-pump",
- "z": "31bba0914516dd85",
- "name": "",
- "F2": "50",
- "inlet": "2",
- "x": 930,
- "y": 340,
- "wires": [
- [
- "ca96bcb7f32f011f",
- "640ecab878ee623a"
- ],
- [
- "8e1117ff307f949b",
- "5266f4e09e7b919b"
- ]
- ]
- },
- {
- "id": "038a9d67ce069678",
- "type": "settling-basin",
- "z": "31bba0914516dd85",
- "name": "",
- "TS_set": "5400",
- "inlet": "1",
- "x": 700,
- "y": 340,
- "wires": [
- [
- "fc4aa2928bdbe228",
- "d9e3b28718762905"
- ],
- [
- "9534da473265bb6a"
- ]
- ]
- },
- {
- "id": "1cb62ce7d6e2b362",
- "type": "recirculation-pump",
- "z": "31bba0914516dd85",
- "name": "",
- "F2": "3000",
- "inlet": 1,
- "x": 470,
- "y": 340,
- "wires": [
- [
- "038a9d67ce069678"
- ],
- [
- "5266f4e09e7b919b"
- ]
- ]
- },
- {
- "id": "2ac1635a77880b09",
- "type": "advancedReactor",
- "z": "31bba0914516dd85",
- "name": "Aerobic 2",
- "reactor_type": "CSTR",
- "volume": "400",
- "length": "",
- "resolution_L": "",
- "alpha": "",
- "n_inlets": 1,
- "kla": "7500",
- "S_O_init": 0,
- "S_I_init": 30,
- "S_S_init": 100,
- "S_NH_init": 16,
- "S_N2_init": 0,
- "S_NO_init": 0,
- "S_HCO_init": 5,
- "X_I_init": 25,
- "X_S_init": 75,
- "X_H_init": 30,
- "X_STO_init": 0,
- "X_A_init": 0.001,
- "X_TS_init": 125.0009,
- "x": 960,
- "y": 260,
- "wires": [
- [
- "3cb7fec9537ac405",
- "1cb62ce7d6e2b362"
- ],
- [],
- []
- ]
- },
- {
- "id": "5f39b76fc9528f75",
- "type": "advancedReactor",
- "z": "31bba0914516dd85",
- "name": "Aerobic 1",
- "reactor_type": "CSTR",
- "volume": "400",
- "length": "",
- "resolution_L": "",
- "alpha": "",
- "n_inlets": 1,
- "kla": "7500",
- "S_O_init": 0,
- "S_I_init": 30,
- "S_S_init": 100,
- "S_NH_init": 16,
- "S_N2_init": 0,
- "S_NO_init": 0,
- "S_HCO_init": 5,
- "X_I_init": 25,
- "X_S_init": 75,
- "X_H_init": 30,
- "X_STO_init": 0,
- "X_A_init": "30",
- "X_TS_init": "132",
- "x": 780,
- "y": 260,
- "wires": [
- [],
- [],
- [
- "2ac1635a77880b09"
- ]
- ]
- },
- {
- "id": "b38f1a7b0ab6a7c7",
- "type": "advancedReactor",
- "z": "31bba0914516dd85",
- "name": "Anoxic 2",
- "reactor_type": "CSTR",
- "volume": "400",
- "length": "",
- "resolution_L": "",
- "alpha": "",
- "n_inlets": 1,
- "kla": "",
- "S_O_init": 0,
- "S_I_init": 30,
- "S_S_init": 100,
- "S_NH_init": 16,
- "S_N2_init": 0,
- "S_NO_init": 0,
- "S_HCO_init": 5,
- "X_I_init": 25,
- "X_S_init": 75,
- "X_H_init": 30,
- "X_STO_init": 0,
- "X_A_init": 0.001,
- "X_TS_init": 125.0009,
- "x": 600,
- "y": 260,
- "wires": [
- [
- "59f0787fadf99939"
- ],
- [],
- [
- "5f39b76fc9528f75"
- ]
- ]
- },
- {
- "id": "5266f4e09e7b919b",
- "type": "advancedReactor",
- "z": "31bba0914516dd85",
- "name": "Anoxic 1",
- "reactor_type": "CSTR",
- "volume": "400",
- "length": "",
- "resolution_L": "",
- "alpha": "",
- "n_inlets": "3",
- "kla": "",
- "S_O_init": 0,
- "S_I_init": 30,
- "S_S_init": 100,
- "S_NH_init": 16,
- "S_N2_init": 0,
- "S_NO_init": 0,
- "S_HCO_init": 5,
- "X_I_init": 25,
- "X_S_init": 75,
- "X_H_init": 30,
- "X_STO_init": 0,
- "X_A_init": 0.001,
- "X_TS_init": 125.0009,
- "x": 420,
- "y": 260,
- "wires": [
- [],
- [],
- [
- "b38f1a7b0ab6a7c7"
- ]
- ]
- },
- {
- "id": "5865699f68c9aa64",
- "type": "inject",
- "z": "0abdac5260d9553e",
- "name": "",
- "props": [
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- },
- {
- "p": "topic",
- "vt": "str"
- }
- ],
- "repeat": "1",
- "crontab": "",
- "once": true,
- "onceDelay": 0.1,
- "topic": "clock",
- "x": 300,
- "y": 260,
- "wires": [
- [
- "5ba082534d7b491e"
- ]
- ]
- },
- {
- "id": "061920b87a45057d",
- "type": "inject",
- "z": "0abdac5260d9553e",
- "name": "Influx composition 1",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- },
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- }
- ],
- "repeat": "1440",
- "crontab": "",
- "once": true,
- "onceDelay": "5",
- "topic": "Fluent",
- "payload": "{\"inlet\":0,\"F\":6600,\"C\":[0,30,100,16,0,0,5,25,75,30,0,0,125]}",
- "payloadType": "json",
- "x": 260,
- "y": 180,
- "wires": [
- [
- "5ba082534d7b491e"
- ]
- ]
- },
- {
- "id": "c2338b164df519f6",
- "type": "debug",
- "z": "0abdac5260d9553e",
- "name": "Sludge removal",
- "active": false,
- "tosidebar": true,
- "console": false,
- "tostatus": false,
- "complete": "payload",
- "targetType": "msg",
- "statusVal": "",
- "statusType": "auto",
- "x": 1260,
- "y": 340,
- "wires": []
- },
- {
- "id": "724aa3442b6fc5fc",
- "type": "debug",
- "z": "0abdac5260d9553e",
- "name": "Sludge recirculation",
- "active": false,
- "tosidebar": true,
- "console": false,
- "tostatus": false,
- "complete": "payload",
- "targetType": "msg",
- "statusVal": "",
- "statusType": "auto",
- "x": 1030,
- "y": 340,
- "wires": []
- },
- {
- "id": "fd2e755a96891ec3",
- "type": "debug",
- "z": "0abdac5260d9553e",
- "name": "Effluent",
- "active": false,
- "tosidebar": true,
- "console": false,
- "tostatus": false,
- "complete": "payload",
- "targetType": "msg",
- "statusVal": "",
- "statusType": "auto",
- "x": 780,
- "y": 340,
- "wires": []
- },
- {
- "id": "c509ace161289789",
- "type": "recirculation-pump",
- "z": "0abdac5260d9553e",
- "name": "",
- "F2": "1000",
- "inlet": "2",
- "x": 1030,
- "y": 260,
- "wires": [
- [
- "c2338b164df519f6",
- "c2fd7710c8b22ffa"
- ],
- [
- "724aa3442b6fc5fc",
- "5ba082534d7b491e",
- "edbda618f142adfa"
- ]
- ]
- },
- {
- "id": "b914e9abe9d60945",
- "type": "settling-basin",
- "z": "0abdac5260d9553e",
- "name": "",
- "TS_set": "5400",
- "inlet": "1",
- "x": 800,
- "y": 260,
- "wires": [
- [
- "fd2e755a96891ec3"
- ],
- [
- "c509ace161289789"
- ]
- ]
- },
- {
- "id": "dc2d2c985e2fdff6",
- "type": "recirculation-pump",
- "z": "0abdac5260d9553e",
- "name": "",
- "F2": "1100",
- "inlet": 1,
- "x": 570,
- "y": 260,
- "wires": [
- [
- "b914e9abe9d60945"
- ],
- [
- "5ba082534d7b491e"
- ]
- ]
- },
- {
- "id": "7f94060aa59d6c3a",
- "type": "advancedReactor",
- "z": "0abdac5260d9553e",
- "name": "Aerobic 1",
- "reactor_type": "PFR",
- "volume": "1470",
- "length": "20",
- "resolution_L": "20",
- "alpha": "0",
- "n_inlets": 1,
- "kla": "7500",
- "S_O_init": 0,
- "S_I_init": 30,
- "S_S_init": 100,
- "S_NH_init": 16,
- "S_N2_init": 0,
- "S_NO_init": 0,
- "S_HCO_init": 5,
- "X_I_init": 25,
- "X_S_init": 75,
- "X_H_init": 30,
- "X_STO_init": 0,
- "X_A_init": "30",
- "X_TS_init": "132",
- "enableLog": true,
- "logLevel": "debug",
- "positionVsParent": "atEquipment",
- "x": 1060,
- "y": 180,
- "wires": [
- [
- "dc2d2c985e2fdff6",
- "a5d1282993a362c9",
- "368215b8dd484211"
- ],
- [],
- []
- ]
- },
- {
- "id": "5ba082534d7b491e",
- "type": "advancedReactor",
- "z": "0abdac5260d9553e",
- "name": "Anoxic 1",
- "reactor_type": "PFR",
- "volume": "730",
- "length": "10",
- "resolution_L": "10",
- "alpha": "0",
- "n_inlets": "3",
- "kla": "",
- "S_O_init": 0,
- "S_I_init": 30,
- "S_S_init": 100,
- "S_NH_init": 16,
- "S_N2_init": 0,
- "S_NO_init": 0,
- "S_HCO_init": 5,
- "X_I_init": 25,
- "X_S_init": 75,
- "X_H_init": 30,
- "X_STO_init": 0,
- "X_A_init": 0.001,
- "X_TS_init": 125.0009,
- "enableLog": true,
- "logLevel": "debug",
- "positionVsParent": "atEquipment",
- "x": 540,
- "y": 180,
- "wires": [
- [
- "4874a8564327e7ab"
- ],
- [],
- [
- "7f94060aa59d6c3a"
- ]
- ]
- },
- {
- "id": "4874a8564327e7ab",
- "type": "function",
- "z": "0abdac5260d9553e",
- "name": "Data_converter",
- "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO},\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;",
- "outputs": 1,
- "timeout": 0,
- "noerr": 0,
- "initialize": "",
- "finalize": "",
- "libs": [],
- "x": 800,
- "y": 120,
- "wires": [
- [
- "ac91a2c6413414f8"
- ]
- ]
- },
- {
- "id": "ac91a2c6413414f8",
- "type": "ui-chart",
- "z": "0abdac5260d9553e",
- "group": "ae38454098a37db0",
- "name": "Anoxic reactor",
- "label": "Anoxic reactor",
- "order": 9007199254740991,
- "chartType": "line",
- "category": "Series",
- "categoryType": "property",
- "xAxisLabel": "",
- "xAxisProperty": "",
- "xAxisPropertyType": "timestamp",
- "xAxisType": "time",
- "xAxisFormat": "",
- "xAxisFormatType": "auto",
- "xmin": "",
- "xmax": "",
- "yAxisLabel": "",
- "yAxisProperty": "Y",
- "yAxisPropertyType": "property",
- "ymin": "",
- "ymax": "",
- "bins": 10,
- "action": "append",
- "stackSeries": false,
- "pointShape": "circle",
- "pointRadius": 4,
- "showLegend": true,
- "removeOlder": "8",
- "removeOlderUnit": "3600",
- "removeOlderPoints": "2000",
- "colors": [
- "#0095ff",
- "#ff0000",
- "#ff7f0e",
- "#2ca02c",
- "#a347e1",
- "#d62728",
- "#ff9896",
- "#9467bd",
- "#c5b0d5"
- ],
- "textColor": [
- "#666666"
- ],
- "textColorDefault": true,
- "gridColor": [
- "#e5e5e5"
- ],
- "gridColorDefault": true,
- "width": 6,
- "height": 8,
- "className": "",
- "interpolation": "linear",
- "x": 1020,
- "y": 120,
- "wires": [
- []
- ]
- },
- {
- "id": "a5d1282993a362c9",
- "type": "function",
- "z": "0abdac5260d9553e",
- "name": "Data_converter",
- "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO},\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;",
- "outputs": 1,
- "timeout": 0,
- "noerr": 0,
- "initialize": "",
- "finalize": "",
- "libs": [],
- "x": 1260,
- "y": 180,
- "wires": [
- [
- "e61130eff38ee89a"
- ]
- ]
- },
- {
- "id": "e61130eff38ee89a",
- "type": "ui-chart",
- "z": "0abdac5260d9553e",
- "group": "ae38454098a37db0",
- "name": "Aerobic reactor",
- "label": "Aerobic reactor / recirculation",
- "order": 9007199254740991,
- "chartType": "line",
- "category": "Series",
- "categoryType": "property",
- "xAxisLabel": "",
- "xAxisProperty": "",
- "xAxisPropertyType": "timestamp",
- "xAxisType": "time",
- "xAxisFormat": "",
- "xAxisFormatType": "auto",
- "xmin": "",
- "xmax": "",
- "yAxisLabel": "",
- "yAxisProperty": "Y",
- "yAxisPropertyType": "property",
- "ymin": "",
- "ymax": "",
- "bins": 10,
- "action": "append",
- "stackSeries": false,
- "pointShape": "circle",
- "pointRadius": 4,
- "showLegend": true,
- "removeOlder": "8",
- "removeOlderUnit": "3600",
- "removeOlderPoints": "2000",
- "colors": [
- "#0095ff",
- "#ff0000",
- "#ff7f0e",
- "#2ca02c",
- "#a347e1",
- "#d62728",
- "#ff9896",
- "#9467bd",
- "#c5b0d5"
- ],
- "textColor": [
- "#666666"
- ],
- "textColorDefault": true,
- "gridColor": [
- "#e5e5e5"
- ],
- "gridColorDefault": true,
- "width": 6,
- "height": 8,
- "className": "",
- "interpolation": "linear",
- "x": 1480,
- "y": 180,
- "wires": [
- []
- ]
- },
- {
- "id": "c2fd7710c8b22ffa",
- "type": "function",
- "z": "0abdac5260d9553e",
- "name": "Data_converter",
- "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"S_O\", \"Y\": S_O},\n { \"Series\": \"S_I\", \"Y\": S_I},\n { \"Series\": \"S_S\", \"Y\": S_S},\n { \"Series\": \"S_NH\", \"Y\": S_NH},\n { \"Series\": \"S_N2\", \"Y\": S_N2},\n { \"Series\": \"S_NO\", \"Y\": S_NO},\n { \"Series\": \"S_HCO\", \"Y\": S_HCO}\n ]};\n\nreturn msg;",
- "outputs": 1,
- "timeout": 0,
- "noerr": 0,
- "initialize": "",
- "finalize": "",
- "libs": [],
- "x": 1260,
- "y": 240,
- "wires": [
- [
- "6cfb58885cf36b74"
- ]
- ]
- },
- {
- "id": "6cfb58885cf36b74",
- "type": "ui-chart",
- "z": "0abdac5260d9553e",
- "group": "de8b029d69f26c0e",
- "name": "Effluent",
- "label": "Effluent",
- "order": 9007199254740991,
- "chartType": "line",
- "category": "Series",
- "categoryType": "property",
- "xAxisLabel": "",
- "xAxisProperty": "",
- "xAxisPropertyType": "timestamp",
- "xAxisType": "time",
- "xAxisFormat": "",
- "xAxisFormatType": "auto",
- "xmin": "",
- "xmax": "",
- "yAxisLabel": "",
- "yAxisProperty": "Y",
- "yAxisPropertyType": "property",
- "ymin": "",
- "ymax": "",
- "bins": 10,
- "action": "append",
- "stackSeries": false,
- "pointShape": "circle",
- "pointRadius": 4,
- "showLegend": true,
- "removeOlder": "8",
- "removeOlderUnit": "3600",
- "removeOlderPoints": "2000",
- "colors": [
- "#0095ff",
- "#ff0000",
- "#ff7f0e",
- "#2ca02c",
- "#a347e1",
- "#d62728",
- "#ff9896",
- "#9467bd",
- "#c5b0d5"
- ],
- "textColor": [
- "#666666"
- ],
- "textColorDefault": true,
- "gridColor": [
- "#e5e5e5"
- ],
- "gridColorDefault": true,
- "width": 6,
- "height": 8,
- "className": "",
- "interpolation": "linear",
- "x": 1460,
- "y": 240,
- "wires": [
- []
- ]
- },
- {
- "id": "edbda618f142adfa",
- "type": "function",
- "z": "0abdac5260d9553e",
- "name": "Data_converter",
- "func": "if (msg.topic != \"Fluent\") {\n return;\n}\n\nconst [S_O, S_I, S_S, S_NH, S_N2, S_NO, S_HCO, X_I, X_S, X_H, X_STO, X_A, X_TS] = msg.payload.C;\n\nmsg = {payload: [\n { \"Series\": \"X_I\", \"Y\": X_I},\n { \"Series\": \"X_S\", \"Y\": X_S},\n { \"Series\": \"X_H\", \"Y\": X_H},\n { \"Series\": \"X_STO\", \"Y\": X_STO},\n { \"Series\": \"X_A\", \"Y\": X_A},\n { \"Series\": \"X_TS\", \"Y\": X_TS}\n ]};\n\nreturn msg;",
- "outputs": 1,
- "timeout": 0,
- "noerr": 0,
- "initialize": "",
- "finalize": "",
- "libs": [],
- "x": 1260,
- "y": 280,
- "wires": [
- [
- "95dc5302c82d6bcb"
- ]
- ]
- },
- {
- "id": "95dc5302c82d6bcb",
- "type": "ui-chart",
- "z": "0abdac5260d9553e",
- "group": "de8b029d69f26c0e",
- "name": "Sludge composition",
- "label": "Sludge composition",
- "order": 9007199254740991,
- "chartType": "line",
- "category": "Series",
- "categoryType": "property",
- "xAxisLabel": "",
- "xAxisProperty": "",
- "xAxisPropertyType": "timestamp",
- "xAxisType": "time",
- "xAxisFormat": "",
- "xAxisFormatType": "auto",
- "xmin": "",
- "xmax": "",
- "yAxisLabel": "",
- "yAxisProperty": "Y",
- "yAxisPropertyType": "property",
- "ymin": "",
- "ymax": "",
- "bins": 10,
- "action": "append",
- "stackSeries": false,
- "pointShape": "circle",
- "pointRadius": 4,
- "showLegend": true,
- "removeOlder": "8",
- "removeOlderUnit": "3600",
- "removeOlderPoints": "2000",
- "colors": [
- "#0095ff",
- "#ff0000",
- "#ff7f0e",
- "#2ca02c",
- "#a347e1",
- "#d62728",
- "#ff9896",
- "#9467bd",
- "#c5b0d5"
- ],
- "textColor": [
- "#666666"
- ],
- "textColorDefault": true,
- "gridColor": [
- "#e5e5e5"
- ],
- "gridColorDefault": true,
- "width": 6,
- "height": 8,
- "className": "",
- "interpolation": "linear",
- "x": 1490,
- "y": 280,
- "wires": [
- []
- ]
- },
- {
- "id": "cb4329d4882d3b10",
- "type": "inject",
- "z": "0abdac5260d9553e",
- "name": "",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- }
- ],
- "repeat": "",
- "crontab": "",
- "once": true,
- "onceDelay": 0.1,
- "topic": "Dispersion",
- "payload": "10000",
- "payloadType": "num",
- "x": 290,
- "y": 340,
- "wires": [
- [
- "5ba082534d7b491e",
- "7f94060aa59d6c3a"
- ]
- ]
- },
- {
- "id": "4b5a1cb582ce04a5",
- "type": "inject",
- "z": "0abdac5260d9553e",
- "name": "Influx composition 2",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- },
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- }
- ],
- "repeat": "1440",
- "crontab": "",
- "once": true,
- "onceDelay": "480",
- "topic": "Fluent",
- "payload": "{\"inlet\":0,\"F\":8000,\"C\":[0,50,125,20,0,0,6.25,10,50,11,0,0,81.5]}",
- "payloadType": "json",
- "x": 260,
- "y": 140,
- "wires": [
- [
- "5ba082534d7b491e"
- ]
- ]
- },
- {
- "id": "68ba512b76ed980a",
- "type": "inject",
- "z": "0abdac5260d9553e",
- "name": "Influx composition 3",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- },
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- }
- ],
- "repeat": "1440",
- "crontab": "",
- "once": true,
- "onceDelay": "960",
- "topic": "Fluent",
- "payload": "{\"inlet\":0,\"F\":6600,\"C\":[0,25,95,12.8,0,0,4,25,75,40,0,0,134]}",
- "payloadType": "json",
- "x": 260,
- "y": 100,
- "wires": [
- [
- "5ba082534d7b491e"
- ]
- ]
- },
- {
- "id": "368215b8dd484211",
- "type": "debug",
- "z": "0abdac5260d9553e",
- "name": "debug 1",
- "active": true,
- "tosidebar": true,
- "console": false,
- "tostatus": false,
- "complete": "false",
- "statusVal": "",
- "statusType": "auto",
- "x": 1280,
- "y": 100,
- "wires": []
- },
- {
- "id": "b5dde0cd3e3b7a9e",
- "type": "inject",
- "z": "394f713d4e71366c",
- "name": "Influx composition 3",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- },
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- }
- ],
- "repeat": "1440",
- "crontab": "",
- "once": true,
- "onceDelay": "960",
- "topic": "Fluent",
- "payload": "{\"inlet\":0,\"F\":1000,\"C\":[0,25,95,12.8,0,0,4,25,75,40,0,0,134]}",
- "payloadType": "json",
- "x": 220,
- "y": 140,
- "wires": [
- [
- "818dbe32cad9fa42"
- ]
- ]
- },
- {
- "id": "74fa10e5ad6ac925",
- "type": "inject",
- "z": "394f713d4e71366c",
- "name": "Influx composition 2",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- },
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- }
- ],
- "repeat": "1440",
- "crontab": "",
- "once": true,
- "onceDelay": "480",
- "topic": "Fluent",
- "payload": "{\"inlet\":0,\"F\":1200,\"C\":[0,50,125,20,0,0,6.25,10,50,11,0,0,81.5]}",
- "payloadType": "json",
- "x": 220,
- "y": 180,
- "wires": [
- [
- "818dbe32cad9fa42"
- ]
- ]
- },
- {
- "id": "ad54f09b8bb12e39",
- "type": "inject",
- "z": "394f713d4e71366c",
- "name": "Influx composition 1",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- },
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- }
- ],
- "repeat": "1440",
- "crontab": "",
- "once": true,
- "onceDelay": "5",
- "topic": "Fluent",
- "payload": "{\"inlet\":0,\"F\":1000,\"C\":[0,30,100,16,0,0,5,25,75,30,0,0,125]}",
- "payloadType": "json",
- "x": 220,
- "y": 220,
- "wires": [
- [
- "818dbe32cad9fa42"
- ]
- ]
- },
- {
- "id": "2776f6ebd3205e51",
- "type": "inject",
- "z": "394f713d4e71366c",
- "name": "",
- "props": [
- {
- "p": "timestamp",
- "v": "",
- "vt": "date"
- },
- {
- "p": "topic",
- "vt": "str"
- }
- ],
- "repeat": "1",
- "crontab": "",
- "once": true,
- "onceDelay": 0.1,
- "topic": "clock",
- "x": 260,
- "y": 300,
- "wires": [
- [
- "818dbe32cad9fa42"
- ]
- ]
- },
- {
- "id": "8538c18935bee1bf",
- "type": "inject",
- "z": "394f713d4e71366c",
- "name": "",
- "props": [
- {
- "p": "payload"
- },
- {
- "p": "topic",
- "vt": "str"
- }
- ],
- "repeat": "",
- "crontab": "",
- "once": true,
- "onceDelay": 0.1,
- "topic": "Dispersion",
- "payload": "3000",
- "payloadType": "num",
- "x": 240,
- "y": 380,
- "wires": [
- [
- "818dbe32cad9fa42",
- "c3d507ed7b05c089"
- ]
- ]
- },
- {
- "id": "818dbe32cad9fa42",
- "type": "advancedReactor",
- "z": "394f713d4e71366c",
- "name": "Anoxic 1",
- "reactor_type": "PFR",
- "volume": "800",
- "length": "30",
- "resolution_L": "20",
- "alpha": "0",
- "n_inlets": "3",
- "kla": "",
- "S_O_init": 0,
- "S_I_init": 30,
- "S_S_init": 100,
- "S_NH_init": 16,
- "S_N2_init": 0,
- "S_NO_init": 0,
- "S_HCO_init": 5,
- "X_I_init": 25,
- "X_S_init": 75,
- "X_H_init": 30,
- "X_STO_init": 0,
- "X_A_init": 0.001,
- "X_TS_init": 125.0009,
- "enableLog": false,
- "logLevel": "info",
- "positionVsParent": "downstream",
- "x": 600,
- "y": 220,
- "wires": [
- [],
- [],
- [
- "c3d507ed7b05c089"
- ]
- ]
- },
- {
- "id": "c3d507ed7b05c089",
- "type": "advancedReactor",
- "z": "394f713d4e71366c",
- "name": "Aerobic 1",
- "reactor_type": "PFR",
- "volume": "800",
- "length": "30",
- "resolution_L": "20",
- "alpha": "0",
- "n_inlets": 1,
- "kla": "7500",
- "S_O_init": 0,
- "S_I_init": 30,
- "S_S_init": 100,
- "S_NH_init": 16,
- "S_N2_init": 0,
- "S_NO_init": 0,
- "S_HCO_init": 5,
- "X_I_init": 25,
- "X_S_init": 75,
- "X_H_init": 30,
- "X_STO_init": 0,
- "X_A_init": "30",
- "X_TS_init": "132",
- "enableLog": false,
- "logLevel": "info",
- "positionVsParent": "upstream",
- "x": 1020,
- "y": 220,
- "wires": [
- [],
- [],
- []
- ]
- }
-]
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index b8efbf7..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,119 +0,0 @@
-{
- "name": "reactor",
- "version": "0.0.1",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "reactor",
- "version": "0.0.1",
- "license": "SEE LICENSE",
- "dependencies": {
- "generalFunctions": "git+https://gitea.centraal.wbd-rd.nl/RnD/generalFunctions.git",
- "mathjs": "^14.5.2"
- }
- },
- "node_modules/@babel/runtime": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
- "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/complex.js": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.4.2.tgz",
- "integrity": "sha512-qtx7HRhPGSCBtGiST4/WGHuW+zeaND/6Ld+db6PbrulIB1i2Ev/2UPiqcmpQNPSyfBKraC0EOvOKCB5dGZKt3g==",
- "license": "MIT",
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/rawify"
- }
- },
- "node_modules/decimal.js": {
- "version": "10.6.0",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
- "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
- "license": "MIT"
- },
- "node_modules/escape-latex": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz",
- "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==",
- "license": "MIT"
- },
- "node_modules/fraction.js": {
- "version": "5.3.4",
- "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
- "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
- "license": "MIT",
- "engines": {
- "node": "*"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/rawify"
- }
- },
- "node_modules/generalFunctions": {
- "version": "1.0.0",
- "resolved": "git+https://gitea.centraal.wbd-rd.nl/RnD/generalFunctions.git#efc97d6cd17399391b011298e47e8c1b1599592d",
- "license": "SEE LICENSE"
- },
- "node_modules/javascript-natural-sort": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz",
- "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==",
- "license": "MIT"
- },
- "node_modules/mathjs": {
- "version": "14.8.0",
- "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-14.8.0.tgz",
- "integrity": "sha512-DN4wmAjNzFVJ9vHqpAJ3vX0UF306u/1DgGKh7iVPuAFH19JDRd9NAaQS764MsKbSwDB6uBSkQEmgVmKdgYaCoQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@babel/runtime": "^7.26.10",
- "complex.js": "^2.2.5",
- "decimal.js": "^10.4.3",
- "escape-latex": "^1.2.0",
- "fraction.js": "^5.2.1",
- "javascript-natural-sort": "^0.7.1",
- "seedrandom": "^3.0.5",
- "tiny-emitter": "^2.1.0",
- "typed-function": "^4.2.1"
- },
- "bin": {
- "mathjs": "bin/cli.js"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/seedrandom": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
- "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==",
- "license": "MIT"
- },
- "node_modules/tiny-emitter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
- "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
- "license": "MIT"
- },
- "node_modules/typed-function": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.2.1.tgz",
- "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==",
- "license": "MIT",
- "engines": {
- "node": ">= 18"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index 4651d19..152c346 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"activated sludge",
"wastewater",
"biological model",
+ "EVOLV",
"node-red"
],
"license": "SEE LICENSE",
@@ -21,9 +22,7 @@
},
"node-red": {
"nodes": {
- "reactor": "reactor.js",
- "recirculation-pump": "additional_nodes/recirculation-pump.js",
- "settling-basin": "additional_nodes/settling-basin.js"
+ "reactor": "reactor.js"
}
},
"dependencies": {
diff --git a/reactor.html b/reactor.html
index cdca7c7..e8c57c5 100644
--- a/reactor.html
+++ b/reactor.html
@@ -2,7 +2,7 @@