Refactor reactor constructors to accept a config object for improved clarity and maintainability

This commit is contained in:
2025-07-04 13:16:49 +02:00
parent 348307d999
commit c239b71ad8
2 changed files with 17 additions and 29 deletions

View File

@@ -99,22 +99,10 @@ class nodeClass {
switch (this.config.reactor_type) {
case "CSTR":
new_reactor = new Reactor_CSTR(
this.config.volume,
this.config.n_inlets,
this.config.kla,
this.config.initialState
);
new_reactor = new Reactor_CSTR(this.config);
break;
case "PFR":
new_reactor = new Reactor_PFR(
this.config.volume,
this.config.length,
this.config.resolution_L,
this.config.n_inlets,
this.config.kla,
this.config.initialState
);
new_reactor = new Reactor_PFR(this.config);
break;
default:
console.warn("Unknown reactor type: " + uiConfig.reactor_type);

View File

@@ -9,16 +9,16 @@ const math = create(all, config)
class Reactor {
constructor(volume, n_inlets, kla){
constructor(config){
this.asm = new ASM3();
this.Vl = volume; // fluid volume reactor [m3]
this.Vl = config.volume; // fluid volume reactor [m3]
this.Fs = Array(n_inlets).fill(0.0); // fluid debits per inlet [m3 d-1]
this.Cs_in = Array.from(Array(n_inlets), () => new Array(13).fill(0.0)); // composition influents
this.Fs = Array(config.n_inlets).fill(0.0); // fluid debits per inlet [m3 d-1]
this.Cs_in = Array.from(Array(config.n_inlets), () => new Array(13).fill(0.0)); // composition influents
this.OTR = 0.0; // oxygen transfer rate [g O2 d-1]
this.kla = kla; // if NaN, use external OTR [d-1]
this.kla = config.kla; // if NaN, use external OTR [d-1]
this.currentTime = Date.now(); // milliseconds since epoch [ms]
this.timeStep = 1/(24*60*15); // time step [d]
@@ -48,9 +48,9 @@ class Reactor {
class Reactor_CSTR extends Reactor {
constructor(volume, n_inlets, kla, initial_state) {
super(volume, n_inlets, kla);
this.state = initial_state;
constructor(config) {
super(config);
this.state = config.initialState;
}
get getEffluent() { // getter for Effluent, defaults to inlet 0
@@ -90,16 +90,16 @@ class Reactor_CSTR extends Reactor {
class Reactor_PFR extends Reactor {
constructor(volume, length, resolution_L, n_inlets, kla, initial_state) {
super(volume, n_inlets, kla);
constructor(config) {
super(config);
this.length = length; // reactor length [m]
this.n_x = resolution_L; // number of slices
this.d_x = length / resolution_L;
this.length = config.length; // reactor length [m]
this.n_x = config.resolution_L; // number of slices
this.A = volume / length; // crosssectional area [m2]
this.d_x = this.length / this.n_x;
this.A = this.Vl / this.length; // crosssectional area [m2]
this.state = Array.from(Array(this.n_x), () => initial_state.slice())
this.state = Array.from(Array(this.n_x), () => config.initialState.slice())
// console.log("Initial State: ")
// console.log(this.state)