36 lines
1.3 KiB
JavaScript
36 lines
1.3 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
const { Reactor_PFR } = require('../../src/specificClass');
|
|
const { makeReactorConfig } = require('../helpers/factories');
|
|
|
|
test('_applyBoundaryConditions enforces Danckwerts inlet and Neumann outlet for flowing case', () => {
|
|
const reactor = new Reactor_PFR(
|
|
makeReactorConfig({ reactor_type: 'PFR', n_inlets: 1, length: 10, resolution_L: 5, volume: 50, alpha: 0.2 }),
|
|
);
|
|
|
|
reactor.Fs[0] = 2;
|
|
reactor.Cs_in[0] = Array(13).fill(9);
|
|
reactor.D = 1;
|
|
|
|
const state = Array.from({ length: reactor.n_x }, (_, i) => Array(13).fill(i));
|
|
reactor._applyBoundaryConditions(state);
|
|
|
|
assert.deepEqual(state[reactor.n_x - 1], state[reactor.n_x - 2]);
|
|
assert.equal(state[0].every((v) => Number.isFinite(v)), true);
|
|
});
|
|
|
|
test('_applyBoundaryConditions copies first interior slice when no flow is present', () => {
|
|
const reactor = new Reactor_PFR(
|
|
makeReactorConfig({ reactor_type: 'PFR', n_inlets: 1, length: 10, resolution_L: 5, volume: 50 }),
|
|
);
|
|
|
|
reactor.Fs[0] = 0;
|
|
const state = Array.from({ length: reactor.n_x }, (_, i) => Array(13).fill(i + 10));
|
|
|
|
reactor._applyBoundaryConditions(state);
|
|
|
|
assert.deepEqual(state[0], state[1]);
|
|
assert.deepEqual(state[reactor.n_x - 1], state[reactor.n_x - 2]);
|
|
});
|