58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
const { ValveHydraulicModel } = require('../../src/hydraulicModel');
|
|
|
|
test('hydraulic model gas branch keeps existing formula when not choked', () => {
|
|
const model = new ValveHydraulicModel({ serviceType: 'gas', gasChokedRatioLimit: 0.9 });
|
|
const result = model.calculateDeltaPMbar({
|
|
qM3h: 36,
|
|
kv: 10,
|
|
downstreamGaugeMbar: 500,
|
|
rho: 1.204,
|
|
tempK: 293.15,
|
|
});
|
|
|
|
const p2AbsBar = (500 / 1000) + 1.01325;
|
|
const expectedDeltaPMbar = ((36 ** 2 * 1.204 * 293.15) / (514 ** 2 * 10 ** 2 * p2AbsBar)) * 1000;
|
|
|
|
assert.ok(result);
|
|
assert.ok(Math.abs(result.deltaPMbar - expectedDeltaPMbar) < 0.05, `expected ${expectedDeltaPMbar}, got ${result.deltaPMbar}`);
|
|
assert.equal(result.details.isChoked, false);
|
|
});
|
|
|
|
test('hydraulic model gas branch applies choked-flow cap', () => {
|
|
const model = new ValveHydraulicModel({ serviceType: 'gas', gasChokedRatioLimit: 0.2 });
|
|
const result = model.calculateDeltaPMbar({
|
|
qM3h: 1000,
|
|
kv: 1,
|
|
downstreamGaugeMbar: 500,
|
|
rho: 1.204,
|
|
tempK: 293.15,
|
|
});
|
|
|
|
const p2AbsBar = (500 / 1000) + 1.01325;
|
|
const expectedCappedDeltaPMbar = p2AbsBar * 0.2 * 1000;
|
|
|
|
assert.ok(result);
|
|
assert.equal(result.details.isChoked, true);
|
|
assert.ok(Math.abs(result.deltaPMbar - expectedCappedDeltaPMbar) < 0.0001, `expected ${expectedCappedDeltaPMbar}, got ${result.deltaPMbar}`);
|
|
});
|
|
|
|
test('hydraulic model liquid branch uses liquid Kv equation', () => {
|
|
const model = new ValveHydraulicModel({ serviceType: 'liquid' });
|
|
const result = model.calculateDeltaPMbar({
|
|
qM3h: 100,
|
|
kv: 50,
|
|
downstreamGaugeMbar: 500,
|
|
rho: 998,
|
|
tempK: 293.15,
|
|
});
|
|
|
|
const expectedDeltaPMbar = (((100 / 50) ** 2) * (998 / 1000)) * 1000;
|
|
|
|
assert.ok(result);
|
|
assert.equal(result.details.isChoked, false);
|
|
assert.ok(Math.abs(result.deltaPMbar - expectedDeltaPMbar) < 0.0001, `expected ${expectedDeltaPMbar}, got ${result.deltaPMbar}`);
|
|
});
|